Time will tell.
pytest
默认执行用例是根据项目下的文件夹名称按ascii
码去收集的, module
里面的用例是从上往下执行。
pytest_collection_modifyitems
钩子函数就是用来改变用例执行顺序的。
pytest_collection_modifyitems
功能是当测试用例收集完成后,可以改变测试用例集合的顺序。
def pytest_collection_modifyitems(session, config,items):
'''
called after collection is completed.
you can modify the ``items`` list
:param _pytest.main.Session session: the pytest session object
:param _pytest.config.Config config: pytest config object
:param List[_pytest.nodes.Item] items: list of item objects
'''
items
是用例对象的一个列表,改变items
里面用例的顺序就可以改变用例的执行顺序了。
1、Pytest默认执行顺序
设计一个 pytest 项目,有两个包,分别在test_a.py
和test_b.py
写测试用例。
conftest.py
的内容:
import pytestdef pytest_collection_modifyitems(session,items):
print("收集到的测试用例:%s"%items)
test_a.py
的内容:
def test_a_1():
print("测试用例a_1")def test_a_2():
print("测试用例a_2")
conftest.py
的内容:
def test_b_2():
print("测试用例b_2")def test_b_1