Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[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 this issue Nov 25, 2024 · 5 comments
Assignees
Labels
Project:integrated 集成管理相关 吴波 吴波
Milestone

Comments

@deepin-bot
Copy link

deepin-bot bot commented Nov 25, 2024

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

  • New upstream release.
  • Standards-Version: 4.7.0.
@deepin-bot deepin-bot bot added the Project:integrated 集成管理相关 label Nov 25, 2024
@deepin-bot deepin-bot bot added this to the V23-Beta3 milestone Nov 25, 2024
@deepin-bot deepin-bot bot moved this to In progress in v23-集成管理 Nov 25, 2024
@deepin-bot
Copy link
Author

deepin-bot bot commented Nov 25, 2024

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/
  • --test-path 指定测试所在的路径。

2. 命令行选项

  • 指定特定模块

    zope-testrunner --module=my_module.tests

    运行 my_module.tests 中的测试用例。

  • 显示详细信息

    zope-testrunner --verbose

    打印详细的测试信息。

  • 启用调试模式

    zope-testrunner --pdb

    测试失败时进入调试器。

  • 捕获日志

    zope-testrunner --capture

    捕获测试期间的标准输出和错误输出。

  • 并行测试

    zope-testrunner --parallel=4

    使用 4 个线程并行运行测试。

  • 运行特定标签的测试

    zope-testrunner --layer=my_layer

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. 测试未被发现

  • 确保测试文件以 test_*.py 命名。
  • 确保指定了正确的 --test-path 或模块路径。

2. 捕获不到标准输出

  • 确保未禁用捕获功能。如果需要查看实时输出,添加 --nocapture

3. 并发运行引发冲突

  • 测试中有共享资源时,添加锁或禁用并发:
    zope-testrunner --parallel=1

总结

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

Influence | 影响范围

ADDITIONAL INFORMATION | 额外补充

@deepin-bot
Copy link
Author

deepin-bot bot commented Nov 25, 2024

IntegrationProjector Notify the author
@deepin: Integrated issue updated

@deepin-bot
Copy link
Author

deepin-bot bot commented Nov 25, 2024

IntegrationProjector Bot
Deepin Testing Integration Project Manager Info
Link to deepin-community/Repository-Integration#2255

@Zeno-sole Zeno-sole assigned babyfengfjx and unassigned Zeno-sole and hudeng-go Nov 25, 2024
@babyfengfjx babyfengfjx assigned kobe337 and unassigned babyfengfjx Nov 25, 2024
@babyfengfjx babyfengfjx moved this from In progress to 测试中 in v23-集成管理 Nov 25, 2024
@babyfengfjx babyfengfjx added the 吴波 吴波 label Nov 25, 2024
@babyfengfjx
Copy link

@kobe337 请开展集成验证。

@kobe337
Copy link

kobe337 commented Nov 26, 2024

【环境】:
镜像: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

@kobe337 kobe337 assigned Zeno-sole and unassigned kobe337 Nov 26, 2024
@kobe337 kobe337 moved this from 测试中 to 测试通过 in v23-集成管理 Nov 26, 2024
@Zeno-sole Zeno-sole moved this from 测试通过 to 已集成 in v23-集成管理 Nov 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Project:integrated 集成管理相关 吴波 吴波
Projects
Status: 已集成
Development

No branches or pull requests

4 participants