找到虫子快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第三方库


热门话题
使用MongoDB进行java漏斗分析?   java如何重构此代码以仅执行一次方法logViolation(),并在单个字符串中获取字符串变量(speedType)的所有值   java如何将方向向量转换为角度?   Java中json文件中的股票价格   java有没有一种方法可以查看网站中的哪些资源加载了selenium?   java文件定位器可以指向不同文件服务器上的目录吗?   java GWT等待SetVisibleRange和ClearData完成   macos Java Applet无法在Mac OS下接收鼠标输入   java BottomNavigationView不支持单次单击必须单击两次   MS SQL Server 2012中的java:我的数据库名称是J.3.0.0\u DEV我无法在Oracle SQL Developer IDE中连接它?   java对JFileChooser的修改,只显示文件夹内容   java如何将动态对象查询更改为criteria builder或更好的性能   java中的swing新字体类型   java Hibernate。删除未使用的条目   上载CSV文件并将其转换为Java模型对象   java如何将信息添加到库的日志消息中?   JavaEclipseGit:使用egit从另一个分支、标记或引用打开版本   使用Firebase控制台消息的java开放视频