在很多人执行用例的时候呢,都会想要调整下用例的执行顺序。在pytest的原生的顺序已经满足不了我们的需求的时候呢,我们可以用pytest-ordering来控制我们的执行的顺序。
安装
pip install pytest-ordering
使用
@pytest.mark.run(order=3)def test_01(): print("test_01") time.sleep(1.0)
@pytest.mark.run(order=2)def test_two(): print("test_two") time.sleep(10)
@pytest.mark.run(order=1)def test_regin(): print("用例test_regin") time.sleep(1.5)
def test_login(): print("用例login") time.sleep(0.1)
def test_05(): print("用例5") time.sleep(2.3)
执行顺序是否
可以看到,我们增加了顺序的,按照规定的数据执行,没有的,按照pytest的默认顺序执行了。
当然还可以去自定义
比如在conftest.py配置如下
# conftest.pyimport pytest
def pytest_collection_modifyitems(config, items): """ 根据指定的mark参数场景,动态选择case的执行顺序""" for item in items: scenarios = [ marker for marker in item.own_markers if marker.name.startswith('scenarios') and marker.name in config.option.markexpr ] if len(scenarios) == 1 and not item.get_closest_marker('run'): item.add_marker(pytest.mark.run(order=scenarios[0].args[0]))
可以根据mark参数场景动态选择case执行顺序
使用
import time
import pytest
@pytest.mark.run(order=3)def test_01(): print("test_01") time.sleep(1.0)
@pytest.mark.run(order=2)def test_two(): print("test_two") time.sleep(10)
@pytest.mark.run(order=1)def test_regin(): print("用例test_regin") time.sleep(1.5)
@pytest.mark.scenarios_1(2)def test_login(): print("用例login") time.sleep(0.1)
@pytest.mark.scenarios_1(1)def test_05(): print("用例5") time.sleep(2.3)
这个时候,需要在pytest.ini配置下
[pytest]markers=scenarios_1
执行
pytest one.py -m scenarios_1 -v -s结果如下
正常情况下,使用自带的即可以满足测试需求。
最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走
这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…..关注下方我的微信公众号【程序员小濠】免费获取~



