pytest如何改变用例的执行顺序

在pytest测试框架,收集用例时默认是按照py文件中用例编写的顺序来收集用例,再执行,再生成测试报告。通过重写收集的钩子函数来改变用例的排序规则从而改变用例执行顺序

如何编写改变用例执行顺序的钩子函数?

官方文档中有说明,通过pytest_collection_modifyitems来修改用例的收集顺序,默认传一个session,configitems参数

 在conftest文件中编写:

def pytest_collection_modifyitems(session, config, items):
    print("打印收集的测试用例对象", items)
    for i in items:
        print(i.name)
    items.sort(key=lambda x: x.name)
    print("改变默认排序后,打印收集的测试用例对象", items)

在改变case收集规则前打印一次默认收集的用例。通过for循环,打印出每个用例的名称。再通过sort函数来按照用例名称,升序排序后来收集用例。再打印出更改收集规则后case的执行规则。效果图如下。

--测试

默认的执行顺序按照py文件中case编写的顺序执行

 修改了用例执行规则后,py文件中case执行顺序。

 没修改之前,默认按照py文件中的编写顺序来执行。修改了之后按照修改的排序规则来执行。所以想对case执行顺序做修改的同学,通过 pytest_collection_modifyitems钩子函数来制定自己想要的规则就好了。

 

posted @ 2022-04-13 22:31  夏大帅  阅读(410)  评论(0编辑  收藏  举报