linuxdeepin / developer-center

Deepin developer center, provide developer wiki and community forum.
451 stars 73 forks source link

[Deepin Integration]~[V23-Beta3] Auto integrate from topic: zope-20241121 by @Cherrling to V23-Beta3 by deepin-ci-robot #10954

Open deepin-bot[bot] opened 4 days ago

deepin-bot[bot] commented 4 days ago

Package information | 软件包信息

包名 版本
zope.testrunner 6.6-1

Package repository address | 软件包仓库地址

deb [trusted=yes] https://ci.deepin.com/repo/obs/deepin:/CI:/TestingIntegration:/test-integration-pr-2255/testing/ ./

Changelog | 更新信息

zope.testrunner (6.6-1) unstable; urgency=medium

deepin-bot[bot] commented 4 days ago

Integration Test Info

Test suggestion | 测试建议

zope.testrunner 简介

zope.testrunner 是一个 Python 包,提供一个灵活且功能丰富的测试运行器,广泛用于 Zope 和其他相关项目中。它支持单元测试和集成测试,基于 Python 的标准测试框架(如 unittestdoctest),并添加了一些高级特性,如分层测试、覆盖报告、调试支持等。


主要特性

  1. 支持的测试框架

    • 兼容 Python 的 unittestdoctest
    • 支持 Zope 的定制测试用例。
  2. 高级功能

    • 测试分层:可以按功能模块组织和执行测试。
    • 捕获标准输出和错误:自动记录测试过程中产生的日志和输出。
    • 多层次调试支持:在测试失败时直接进入调试器。
    • 并发测试执行:可以加速大规模测试套件的运行。
  3. 丰富的命令行选项

    • 可以指定测试模式、目录、过滤器等。
  4. 灵活的配置

    • 通过 test.cfg 等配置文件调整运行参数。

安装

使用 pip 安装 zope.testrunner

pip install zope.testrunner

如果需要在特定项目中运行,建议在虚拟环境中安装:

python -m venv venv
source venv/bin/activate
pip install zope.testrunner

基本用法

1. 运行测试

zope.testrunner 提供了一个命令行工具,可以直接运行:

zope-testrunner --test-path <路径>

示例:

zope-testrunner --test-path src/

2. 命令行选项

3. 使用 test.cfg 配置文件

可以通过配置文件简化测试参数设置。在项目根目录创建一个 test.cfg

[zope.testrunner]
test-path = src/
module = my_module.tests
parallel = 4
verbose = true

然后直接运行:

zope-testrunner

编写测试

1. unittest 测试

zope.testrunner 可以运行标准的 unittest 测试:

import unittest

class MyTestCase(unittest.TestCase):
    def test_addition(self):
        self.assertEqual(1 + 1, 2)

if __name__ == "__main__":
    unittest.main()

将测试文件命名为 test_*.pyzope.testrunner 会自动发现。

2. doctest 测试

支持在文档字符串中编写测试:

def add(a, b):
    """
    Adds two numbers together.

    >>> add(2, 3)
    5
    >>> add(-1, 1)
    0
    """
    return a + b

运行 zope.testrunner,会自动执行文档测试。

3. 使用分层测试

Zope 项目通常使用分层测试。以下是定义测试层的示例:

from zope.testrunner.layer import Layer

class MyLayer(Layer):
    @classmethod
    def setUp(cls):
        print("Setting up the test layer...")

    @classmethod
    def tearDown(cls):
        print("Tearing down the test layer...")

然后将测试分配到该层:

import unittest

class MyTestCase(unittest.TestCase):
    layer = MyLayer

    def test_example(self):
        self.assertTrue(True)

运行时可以指定 --layer 参数以选择特定层的测试。


调试测试

失败时进入调试器

添加 --pdb 参数,在测试失败时直接进入调试器:

zope-testrunner --pdb

查看详细日志

使用 --log 捕获日志:

zope-testrunner --log=test.log

调试单个测试

通过模块路径运行特定测试:

zope-testrunner --module=my_module.tests --test-pattern=test_addition

与 CI/CD 集成

zope.testrunner 可以方便地集成到 CI/CD 流程中。例如,在 GitHub Actions 中:

name: Python Tests

on: [push]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: '3.9'
      - name: Install dependencies
        run: |
          python -m venv venv
          source venv/bin/activate
          pip install -r requirements.txt
      - name: Run tests
        run: |
          source venv/bin/activate
          zope-testrunner --test-path src/ --verbose

常见问题

1. 测试未被发现

2. 捕获不到标准输出

3. 并发运行引发冲突


总结

zope.testrunner 是一个强大且灵活的测试运行工具,特别适合大型项目和复杂的测试需求。通过其丰富的选项和分层机制,能够有效地组织和运行测试,支持单元测试、集成测试和文档测试等多种场景。如果有其他问题,欢迎随时提问!

Influence | 影响范围

ADDITIONAL INFORMATION | 额外补充

deepin-bot[bot] commented 4 days ago

IntegrationProjector Notify the author @deepin: Integrated issue updated

deepin-bot[bot] commented 4 days ago

IntegrationProjector Bot Deepin Testing Integration Project Manager Info Link to https://github.com/deepin-community/Repository-Integration/pull/2255

babyfengfjx commented 4 days ago

@kobe337 请开展集成验证。

kobe337 commented 3 days ago

【环境】: 镜像:Deepin OS-25-20241107064136-1_x86_64 内核:Linux deepin-PC 6.12.0-amd64-desktop-rolling #23.01.01.10 SMP PREEMPT_DYNAMIC Tue Nov 19 21:11:07 CST 2024 x86_64 GNU/Linux

【结论】: 测试通过,暂无严重问题及影响, 安装校验,版本核对,基本命令使用,测试脚本运行,验证通过,请研发同事确认,是否推送内测。 Image