跳转到主要内容

Zope测试运行脚本。

项目描述

zope.testrunner

Latest release Supported Python versions https://github.com/zopefoundation/zope.testrunner/actions/workflows/tests.yml/badge.svg https://coveralls.io/repos/github/zopefoundation/zope.testrunner/badge.svg?branch=master Documentation Status

本软件包提供了一个具有层支持的灵活测试运行器。

详细文档托管在 https://zopetestrunner.readthedocs.io

使用zope.testrunner

安装

基于Buildout的项目

zope.testrunner通常用于使用buildout的项目

[buildout]
develop = .
parts = ... test ...

[test]
recipe = zc.recipe.testrunner
eggs = mypackage

通常的buildout过程

python bootstrap.py
bin/buildout

创建一个 bin/test 脚本,该脚本将运行 mypackage 的测试。

基于Virtualenv的项目

pip install zope.testrunner 并运行 zope-testrunner 脚本。使用以下命令运行您的测试

zope-testrunner --test-path=path/to/your/source/tree

您的源代码需要可供测试运行器导入,因此您需要在该虚拟环境中运行python setup.py installpip install -e .

一些有用的命令行选项,帮助您开始

-p

显示进度指示器

-v

增加详细程度

-c

使输出着色

-t 测试

指定测试名称(一个或多个正则表达式)

-m 模块

指定测试模块(一个或多个正则表达式)

-s

指定测试包(一个或多个正则表达式)

--list-tests

显示测试名称而不是运行它们

-x

在第一个错误或失败时停止

-D--pdb

启用测试失败后的调试

--xml 路径

生成XML报告,写入指定路径

--help

显示所有命令行选项(还有很多!)

例如

bin/test -pvc -m test_foo -t TestBar

运行名为test_foo.py的模块中的所有TestBar测试。

编写测试

zope.testrunner期望在您的包目录中找到测试,在名为tests的子包或模块中。测试子包中的测试模块应命名为test*.py

测试本身应该是继承自unittest.TestCase的类,如果您想使用doctests,请通过提供一个名为test_suite的函数来告诉测试运行器它们的位置以及用于它们的选项。

示例

import unittest
import doctest

class TestArithmetic(unittest.TestCase):

    def test_two_plus_two(self):
        self.assertEqual(2 + 2, 4)


def doctest_string_formatting():
    """Test Python string formatting

        >>> print('{} + {}'.format(2, 2))
        2 + 2

    """

def test_suite():
    return unittest.TestSuite([
        unittest.defaultTestLoader.loadTestsFromName(__name__),
        doctest.DocTestSuite(),
        doctest.DocFileSuite('../README.txt',
                             optionflags=doctest.ELLIPSIS),
    ])

测试分组

除了按包和按模块过滤外,zope.testrunner还有其他机制来分组测试

  • 允许您有一组共享的设置/清理代码,这些代码被一组测试使用,并且只执行一次,而不是对每个测试都执行。层与通常的包/模块结构正交,通过在测试套件上设置layer属性来指定。

  • 级别允许您将运行缓慢的测试分组,并且默认不运行它们。它们通过将测试套件的level属性设置为一个整数来指定。

其他功能

zope.testrunner可以对您的测试进行性能分析,测量测试覆盖率,检查内存泄漏,与subunit集成,打乱测试执行顺序,并并行运行多个测试。

zope.testrunner 变更日志

6.5 (2024-08-06)

  • 支持unittest.TestCase.subTest#91)。

  • 移除对setup.pytest命令的支持。现代setuptools版本已经放弃了该命令的支持,相应地,大多数zopefoundation包也已经移除;zope.testrunner现在也跟随。

  • 当使用的setuptools版本仍然支持test时,setup.pyftest命令现在仅受支持。

6.4 (2024-02-27)

  • 添加PEP 420支持(隐式命名空间)。(#160)

6.3.1 (2024-02-12)

  • 修复在分发中运行或单独运行时的XML测试。(#163

6.3 (2024-02-07)

  • 使用测试运行器的--version参数时干净退出。(#102

  • 添加新的 --xml <path> 选项,用于生成类似JUnit的XML报告。代码来自 collective.xmltestreport,但请注意,这里的 --xml 不是一个布尔值,而是期望一个路径!(#148)。

  • 支持Python 3.13a3。

6.2.1 (2023-12-22)

  • 解决Python 3.12.1+不再调用 startTest 以跳过测试的问题(#157)。

6.2 (2023-11-08)

  • 支持Python 3.12。

  • 将代码和测试更新到 python-subunit >= 1.4.3,因此至少需要这个版本。

6.1 (2023-08-26)

  • 初步支持Python 3.12b4。(#149

6.0 (2023-03-28)

  • 停止支持Python 2.7、3.5、3.6。

5.6 (2022-12-09)

  • 支持Python 3.11。

  • 内联Python 3.9已弃用并在3.11中删除的 random.Random.shuffle 的一部分(#119)。

  • 对于跳过的测试,不要触发死后调试器。( #141)。

5.5.1 (2022-09-07)

  • 修复:当 --at-level=levellevel <= 0 一起使用时,在所有级别上运行测试(而不是在无级别上) #138

5.5 (2022-06-24)

  • 使用 sys._current_frames(而不是 threading.enumerate)作为新线程检测的基础,修复了 #130

  • 新选项 --gc-after-test。它在每个测试后进行垃圾收集,可以用来追踪 ResourceWarning 和循环垃圾。使用 ``rv = gc.collect()``,当 rv 非零(即循环结构已释放)时,在1级详细输出 ``!``,在更高详细级别输出 ``[``*rv*``]``,并在4+级详细输出循环垃圾分析。有关详细信息,请参阅 #133

  • 允许通过环境变量 ZOPE_TESTRUNNER_LOG_INI 指定日志配置文件名。如果未定义,配置将继续锁定在当前工作目录的 log.ini 文件中。请记住环境变量 ZOPE_TESTRUNNER_LOG_INI 中的日志配置文件,以便派生的子进程可以重新创建日志配置。有关详细信息,请参阅 #134

5.4.0 (2021-11-19)

  • 改进 --help 文档中的 --package-path 选项(#121)。

  • 在日志支持初始化期间不要禁用现有的记录器(#120)。

  • 修复测试工具 >= 2.5.0 的测试(#125)。

  • 支持Python 3.10。

5.3.0 (2021-03-17)

  • 支持Python 3.9。

  • 修复 package init file missing 警告(#112)。

  • 在Python 3中使用 –buffer 或在subunit下测试时,让标准流提供 buffer 属性。

5.2 (2020-06-29)

  • 支持Python 3.8。

  • 当在子进程中运行层时,以线程的方式读取其stderr,以避免如果stderr输出(包含失败和错误的测试ID)超过管道容量时发生死锁(#105)。

5.1 (2019-10-19)

  • 在层setUp或tearDown失败时更优雅地恢复,生成有用的子单元输出。

  • 如果未使用--module选项,则防止--require-unique选项产生虚假警告。

  • 在测试期间添加标准输出和标准错误的可选缓冲,通过--buffer选项请求或默认为subunit启用。

  • 修复4.0.1中损坏的层总结输出中的错误计数。

5.0 (2019-03-19)

  • 修复在使用Python 3.8a1时发生的测试失败和弃用警告。(#89

  • 放弃对Python 3.4的支持。

4.9.2 (2018-11-24)

  • 修复在Python 3上并行运行测试时出现的TypeError: a bytes-like object is required, not 'str'错误。请参阅问题80

4.9.1 (2018-11-21)

  • 修复Python 3上_DummyThread.isAliveAssertionError。(#81

4.9 (2018-10-05)

  • 放弃对Python 3.3的支持。

  • 添加对Python 3.7的支持。

  • 在coveralls.io和tox.ini上启用测试覆盖率报告。

  • https://zopetestrunner.readthedocs.io上托管文档。

  • 移除对--pychecker选项的不测试支持。请参阅问题63

  • 更新命令行界面,使用argparse而不是optparse。请参阅问题61

  • 如果可用,则使用ipdb而不是pdb进行事后调试。(#10

  • 添加检查重复测试ID的--require-unique选项。请参阅LP #682771

  • 重新引入对subunit的可选支持,现在支持其协议的1和2版本。

  • 在格式化链式异常时处理异常值中的字符串。(#74

4.8.1 (2017-11-12)

  • 在发现测试模块时更早地启用DeprecationWarning。这允许在导入时引发的警告(例如由zope.deprecation.moved产生的警告)被报告。请参阅问题57

4.8.0 (2017-11-10)

  • 在运行测试时自动启用DeprecationWarning。Python核心开发者建议这样做,并且与unittest模块的行为相匹配。这可以通过Python命令行选项(-W)或环境变量(PYTHONWARNINGS)来覆盖。请参阅问题54

4.7.0 (2017-05-30)

  • 放弃对subunit的所有支持。

4.6.0 (2016-12-28)

  • subunit支持纯粹地作为可选功能:通过zope.testrunner获取依赖项的应用程序应将zope.testrunner[subunit]添加到其install_requires中,或者直接依赖python-subunit

  • 添加新的选项--ignore-new-thread=<regexp>来抑制“New thread(s)”警告。

  • 支持Python 3.6。

4.5.1 (2016-06-20)

  • 修复:使用-j选项在多个进程中运行测试会导致使用multiprocessing包的测试挂起(因为测试运行程序将sys.stdin替换为不可关闭的对象)。

  • 放弃对unittest2的条件依赖(在放弃对Python 2.6的支持后变得冗余)。

4.5.0 (2016-05-02)

  • 在以-x/–stop-on-error启动时,当测试失败或出现错误时停止所有层的测试。(#37

  • 放弃对Python 2.6和3.2的支持。

4.4.10 (2015-11-10)

  • 添加对Python 3.5的支持。(#31

  • 将额外的路径(从 --path)插入到 sys.argv 的前面。

4.4.9 (2015-05-21)

  • 当使用 -j 时,并行化所有测试,包括第一个测试层。

4.4.8 (2015-05-01)

  • 支持在 subunit 输出中跳过测试。

  • 更有效的测试筛选。

4.4.7 (2015-04-02)

  • 解决 PyPy3 的 curses 模块中的错误。

4.4.6 (2015-01-21)

  • 恢复对在 4.4.5 中退化的基于实例的测试层的支持。

4.4.5 (2015-01-06)

  • 将相关层排序在一起以减少不必要的拆解数量(修复 #14)。

  • 首先运行单元测试层(修复 LP #497871)。

4.4.4 (2014-12-27)

  • 在查找测试代码的正确位置时,首先使用最长的位置路径。这解决了嵌套代码位置的问题。

4.4.3 (2014-03-19)

  • 添加了对 Python 3.4 的支持。

4.4.2 (2014-02-22)

4.4.1 (2013-07-10)

  • 更新 boostrap.py 到版本 2.2。

  • 修复 Python 3.3 上的非确定性测试失败。

  • 在死后调试完成后拆解层。

  • 修复写入源目录的测试,它可能是只读的。

4.4.0 (2013-06-06)

4.3.3 (2013-03-03)

  • 当通过 python setup.py ftest 运行时,子进程中的层运行不起作用,因为它试图使用所有命令行选项运行 setup.py。现在它会检测到 setup.py 的运行,并且我们直接运行测试运行器。

4.3.2 (2013-03-03)

  • 修复在指定了 test_suite 值的分发中 SkipLayers 类的情况。

4.3.1 (2013-03-02)

  • 修复 ftest 命令中的错误并添加了一个测试。

  • 修复上一个版本中 Python 3 的简单测试失败。

4.3.0 (2013-03-02)

  • 通过入口点公开 ftest distutils 命令。

  • 添加了对 zope.testrunner.eggsupport 的测试。

4.2.0 (2013-02-12)

  • 停止使用 2to3,重写源代码以与所有 Python 版本兼容。引入了对 six 的依赖。

4.1.1 (2013-02-08)

  • 停止使用 zope.fixers(LP: #1118877)。

  • 修复 tox 测试错误报告;修复了 Pythons 2.6、3.1、3.2、3.3 和 PyPy 1.9 的测试。

  • 修复 Python 3.2 上的 –shuffle 排序,使其与旧版本 Python 的相同。

  • 修复存在多个测试层时的 –shuffle 非确定性。注意:这可能会改变相同 –shuffle-seed 的测试顺序。

  • 新选项:–profile-directory。在测试套件中使用它,以便由 detox 并行执行的测试不会冲突。

  • 在测试套件中使用临时覆盖率目录,以便由 detox 并行执行的测试不会冲突。

  • 修复 -post-mortem(又称 -D, –pdb)当测试模块无法导入或无效时(LP #1119363)。

4.1.0 (2013-02-07)

  • 用等价的 zope.interface.implementer 装饰器替换了过时的 zope.interface.implements 使用。

  • 放弃了对 Python 2.4 和 2.5 的支持。

  • 使 StartUpFailure 与 unittest.TextTestRunner() 兼容(LP #1118344)。

4.0.4 (2011-10-25)

  • 解决了子进程缓冲测试中偶发的时序相关问题的解决方案。感谢 Jonathan Ballet 提供补丁!

4.0.3 (2011-03-17)

  • 重新添加了对 Python <= 2.6 的支持,该支持在 4.0.2 中已损坏。

4.0.2 (2011-03-16)

  • 重新添加了对 Python 3 的支持,该支持在 4.0.1 中已损坏。

  • 通过实现整个概念来修复对 Unexpected success 的支持。

  • 添加了对 Python 3.2 中的新 __pycache__ 目录的支持。

4.0.1 (2011-02-21)

  • LP #719369:将 Python 2.7 中引入的 Unexpected success(概念)不再处理为成功,而是处理为失败。这是一个解决方案。整个意外成功概念可能稍后实现。

4.0.0 (2010-10-19)

  • 显示有关设置失败层的更多信息(LP #638153)。

4.0.0b5 (2010-07-20)

  • 将 LP #221151 的修复更新为与 Python 2.4 兼容的拼写。

  • 现在,子单元输出总是包含时间戳(r114849)。

  • LP #591309:修复了子单元报告包含 UTF8 编码数据的测试失败时的崩溃问题。

4.0.0b4 (2010-06-23)

  • 打包为 zipfile 以解决 Python 2.4 distutils 的错误(zope.testrunner 本身没有功能更改或错误修复)。

4.0.0b3 (2010-06-16)

  • 通过提供 _testMethodDoc 属性来使 unittest.TestCase.shortDescription 满意(LP #221151)。

  • LP #595052:保持 Python 2.4 下可安装的发行版:其 distutils 似乎将用于测试的 foo.bar egg 中的空 __init__.py 文件转换为目录。

  • LP #580083:修复 bin/test 脚本,使其仅运行 zope.testrunner 中的测试。

  • LP #579019:当层并行运行时,它们的 tearDown 未被调用。此外,主线程中运行的第一个层也没有调用它的 tearDown。

4.0.0b2 (2010-05-03)

  • 在 MANIFEST.in 中有“sampletests”会给出警告,但实际上并没有包括更多的文件,所以我移除了它。

  • 将 zope.testing.exceptions 移动到 zope.testrunner.exceptions。现在 zope.testrunner 除了运行其自身的测试外,不再需要 zope.testing。

4.0.0b1 (2010-04-29)

  • 从 zope.testrunner 释放测试运行器作为其自身的模块。(之前它是 zope.testing 的一部分。)

发布历史 发布通知 | RSS 源

下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

zope.testrunner-6.5.tar.gz (155.7 kB 查看哈希值)

上传时间

构建分发

zope.testrunner-6.5-py3-none-any.whl (233.8 kB 查看哈希值)

上传时间 Python 3

由以下提供支持