找到虫子快10倍

pytest-testmon的Python项目详细描述


Build Status

这是一个pytest插件,它只自动选择并重新执行受最近更改影响的测试。在python这样的动态语言中,这是如何实现的?它有多可靠?请阅读:Determining affected tests

用法

pip install pytest-testmon

# build the dependency database and save it to .testmondata
pytest --testmon

# change some of your code (with test coverage)

# only run tests affected by recent changes
pytest --testmon

# start from scratch (if needed)
rm .testmondata

# automatic re-execution on every file change with pytest-watch (https://github.com/joeyespo/pytest-watch)
pip install pytest-watch
ptw -- --testmon

其他开关

–project directory=coveragepy只跟踪此目录下的文件。默认为rootdir,可以重复

配置

将testmon添加到pytest.ini中

[pytest]
# If you want to separate different environments running the same sources.
run_variant_expression = os.environ.get('DJANGO_SETTINGS_MODULE') + ':python' + str(sys.version_info[:2])
addopts = --testmon # you can make --testmon a default if you want

可以编写更复杂的run_variant_表达式:ossyshashlib模块可用,并且有一个助手函数md5 将返回hashlib.md5(s.encode()).hexDigest()

配置子流程跟踪

如果您的测试套件使用子流程,testmon将支持此功能。您只需配置python+覆盖率 这样覆盖挂钩在每个python进程启动时执行。您可以通过安装 覆盖率

pip install coverage_pth

如果有任何问题,您仍然可以配置pythonmanually

故障排除-常见问题

testmon选择太多要执行的测试:根据您的更改,很可能是 是故意的。如果更改了方法参数名,则可以有效地更改整个层次结构 参数->;方法->;类->;模块,因此使用该模块中任何内容的任何测试都将 重新执行。

在testmon下运行时测试失败:testmon不太可能影响执行 测试本身。但是,使用testmon取消选择并执行的测试集是高度可变的, 这意味着testmon可能会公开不需要的测试依赖项。请修复您的测试套件。

如果您的测试在没有testmon的pytest cov(coverage)下受到影响,也可以尝试。用于报告 一个描述意外行为的存储库是最好的,但是请不要犹豫 即使您的项目是封闭源代码,也要报告。我们会努力解决的!

路线图

testmon正在接近完整性。不幸的是,即使没有testmon,经典的控制台ui也达到了可用性的极限。 使用testmon,要确定哪些测试正在执行、哪些测试失败以及为什么失败,就更加困难了。 下一步将是gui的实现或集成。我不喜欢任何现有的图形测试跑者,所以 如果你有更好的新概念,请联系!

想法

单独的测试结果依赖于很多东西,所以让我们写一点关于其中一些的东西。

  1. 在测试项目中执行的python代码(可能变化非常频繁,一点一点地变化)
  2. 环境变量(例如django_settings_模块)、python版本(run_variant_expression config值表示这些)
  3. 在所有libraries中执行的python代码(可能很少更改)
  4. 数据文件(txt、xml、其他项目资产)
  5. 外部服务(通过网络连接)

testmon到目前为止,它处理面对1时增量运行的测试。和2。变更类别。

以后的版本可以实现对其他类别的某些检测

libraries:我们可以比较运行之间的pip freeze,但是速度很慢

数据文件:这里最好的选择可能是一种配置,开发人员可以指定进行测试所依赖的文件

赞助商

非常感谢Qvantel,Nick CoghlanAbilian SASInfinit作为testmon第一个发行版的银级赞助商。我们竞选活动的所有贡献者名单是here。非常感谢所有的贡献者。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Log4j:运行服务器日志时发出警告   ssl与Java通信到TLSEncypted CUPS打印服务器   Guice Java提供的方法没有已知的依赖关系?   java Android:EditText的默认文本大小是多少?   更正错误字符串的Java异常   string Java如何从来自多个源的数据推断类型   从路径错误创建java文件   java获取不同类安卓中切换按钮的状态   java扩展AnyVal和AnyRef的对象的内存分配有什么不同   java如何从callable(即runnable)获取类名   java Hornetq大量消息填满了磁盘空间   用java从excel中读取一行的多列?   java不使用JAXB将映射转换为XML   java将多个图像与一个图像进行比较   当X扩展Y时,javax不适用于参数Y   运行时jar文件中未显示java Python输出   JavaSpringMVC3:定义自己的DatatypeBinding   java从fragment类调用activity函数给出了NPE   java在时区、日历和SimpleDataFormat方面存在奇怪的问题