pytest插件帮助查找耦合测试

pytest-sherlock的Python项目详细描述


皮特斯特夏洛克

Build StatusCovPyPIPyPI - Python VersionPyPI - Wheel

Pytest插件,帮助查找耦合测试。在

有时我们会根据排序进行耦合测试

例如:

  • 传递tests/exmaple/test_all_read.py tests/exmaple/test_b_modify.py tests/exmaple/test_c_delete.py
  • 失败tests/exmaple/test_c_delete.py tests/exmaple/test_b_modify.py tests/exmaple/test_all_read.py

在这种情况下,检测耦合测试非常简单,但是如果我们有>;=1k的测试之前调用它将很困难

内容:

安装

pip install pytest-sherlock

使用方法:

^{pr2}$

插件并没有运行所有的测试,它试图找到一些可能有罪的测试,并将首先运行

Try to find coupled tests in [3-4] steps
__________________________ Step [1 of 4]: __________________________

tests/exmaple/test_c_delete.py::test_delete_random_param PASSED                                                                                                      [20%]
tests/exmaple/test_b_modify.py::test_modify_random_param PASSED                                                                                                      [40%]
tests/exmaple/test_c_delete.py::test_deleted_passed PASSED                                                                                                           [60%]
tests/exmaple/test_c_delete.py::test_do_not_delete PASSED                                                                                                            [80%]
tests/exmaple/test_all_read.py::test_read_params FAILED                                                                                                             [100%]
__________________________ Step [2 of 4]: __________________________

tests/exmaple/test_c_delete.py::test_delete_random_param PASSED                                                                                                      [33%]
tests/exmaple/test_b_modify.py::test_modify_random_param PASSED                                                                                                      [66%]
tests/exmaple/test_all_read.py::test_read_params FAILED                                                                                                             [100%]
__________________________ Step [3 of 4]: __________________________

tests/exmaple/test_c_delete.py::test_delete_random_param PASSED                                                                                                      [50%]
tests/exmaple/test_all_read.py::test_read_params PASSED                                                                                                              [100%]
__________________________ Step [4 of 4]: __________________________

tests/exmaple/test_b_modify.py::test_modify_random_param PASSED                                                                                                      [50%]
tests/exmaple/test_all_read.py::test_read_params FAILED                                                                                                             [100%]==============================FAILURES==============================
__________________________ test_read_params __________________________

Found coupled tests:
tests/exmaple/test_b_modify.py::test_modify_random_param
tests/exmaple/test_all_read.py::test_read_params

Common fixtures:
config

How to reproduce:
pytest -l -vv tests/exmaple/test_b_modify.py::test_modify_random_param tests/exmaple/test_all_read.py::test_read_params


AssertionError: assert 13==2
 +  where 13= <built-in method get of dict object at 0x102664280>('b')
 +    where <built-in method get of dict object at 0x102664280> ={'a': 1, 'b': 13, 'c': 3}.get

tests/exmaple/test_all_read.py:8: AssertionError===================1 failed, 9 passed in 0.08 seconds===================

待办事项

我有几个想法,如何改进finder耦合测试:

  • 使用AST检测代码(变量、函数等…)

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

推荐PyPI第三方库


热门话题
java需要一种简单的方法来创建用于排序的comparator类   java getReadableDatabase和getWriteableDatabase无法解析   查找列表<Long>中与某个元素对应的所有索引的java方法   安卓将视图添加到ViewFlipper会导致java。StackOverflowerr语言   java根据它所包含的长“curTime”类字段将N的列表拆分为24(小时)   Android N中的Java8流API   自动生成Java策略文件的安全性   垃圾收集鼓励Java中的主要GC(但不是STW GC)   java如何检查UDP服务器上侦听的客户端数量   在前一台主机被Datastax Java驱动程序关闭后,Cassandra尝试重新连接到下一台主机   java如何使用Spring Boot创建部分代理   java是否有一个网站或资源可以完全比较EJB版本   java无需使用第三方库从gradle生成输出   继承由于这个多态性的基本示例中的语法有什么不同吗?(爪哇)   java字符串数组中的空字符串   java为什么CMS中的初始标记阶段是串行的   为什么Lucene有时与InChIKeys不匹配?   安卓通知Java应用程序数据库中的更改   java如何将单个json对象值解析为按钮   java打印堆栈将运行时错误跟踪到文件