pytest插件帮助查找耦合测试
pytest-sherlock的Python项目详细描述
皮特斯特夏洛克
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检测代码(变量、函数等…)
- 项目
标签: