Zope测试运行脚本。
项目描述
zope.testrunner
本软件包提供了一个具有层支持的灵活测试运行器。
使用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 install或pip 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.py的test命令的支持。现代setuptools版本已经放弃了该命令的支持,相应地,大多数zopefoundation包也已经移除;zope.testrunner现在也跟随。
当使用的setuptools版本仍然支持test时,setup.py的ftest命令现在仅受支持。
6.4 (2024-02-27)
添加PEP 420支持(隐式命名空间)。(#160)
6.3.1 (2024-02-12)
修复在分发中运行或单独运行时的XML测试。(#163)
6.3 (2024-02-07)
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)
5.5.1 (2022-09-07)
修复:当 --at-level=level 与 level <= 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)
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.isAlive的AssertionError。(#81)
4.9 (2018-10-05)
放弃对Python 3.3的支持。
添加对Python 3.7的支持。
在coveralls.io和tox.ini上启用测试覆盖率报告。
移除对--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)
停止支持 Python 3.1。
修复当发生不可打印的异常时的死后调试(https://github.com/zopefoundation/zope.testrunner/issues/8)。
4.4.1 (2013-07-10)
更新 boostrap.py 到版本 2.2。
修复 Python 3.3 上的非确定性测试失败。
在死后调试完成后拆解层。
修复写入源目录的测试,它可能是只读的。
4.4.0 (2013-06-06)
修复使用多个负“!”模式时的测试选择(LP #1160965)。
将测试移动到“tests”子包。
使 python -m zope.testrunner 再次工作。
支持 unittest2 的“skip”功能(在 Python 2.7 中成为新的 unittest)。
当与子进程通信失败时提供更好的诊断(https://github.com/zopefoundation/zope.testrunner/issues/5)。
当测试套件更改工作目录时,不要中断子进程执行(https://github.com/zopefoundation/zope.testrunner/issues/6)。
将测试模块导入错误计为错误(LP #1026576)。
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 的一部分。)
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
zope.testrunner-6.5.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d1ff88aa8dab42a2f0de2f522719f675e8977a4b82ece6526ae742e1fdabdbdc |
|
MD5 | 01ad986b3069e5874cf651af1301803a |
|
BLAKE2b-256 | ab6469880c712fdcea3b9b8e1921dd532f055abf675610d562c44a50be3942ae |
zope.testrunner-6.5-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4e7cb11394eac1f42542a4f04f563ab4af8e1711161350eef83e740f36c70822 |
|
MD5 | 8379108fbc0a2eb1b9dbf554fe2a8777 |
|
BLAKE2b-256 | 3ae07f4afca3ca62bf17c3fb839d391b79fd3f747d12ef723dd3b88174775aa4 |