pytest用例执行顺序,pytest 顺序执行
默认情况下,pytest测试用例按照先外层后内层(目录中的文件)的升序执行,同一级别的包或文件按照名称和ascii码执行,文件中的用例按照顺序执行。本文主要介绍pytest多文件执行顺序控制的相关信息,有需要的可以参考一下。
1.只有一个py文件
1.使用pytest进行接口测试。如果测试用例只存在于单个。py文件,测试用例将默认从上到下执行。如果使用pytest-order插件。
2.如果存在多个py文件
1.使用pytest进行接口测试。如果测试用例存在于多个。py文件,默认情况下它是以ascii码的文件名顺序执行的。进入文件后,默认自上而下执行每个单元测试界面。
Test_user.py #用户相关
类测试用户:
定义测试_用户_创建:
定义测试_用户_登录:
定义测试_用户_删除
Test_order.py #订单相关
类别TestOrder:
def测试_订单_创建:
定义测试_订单_列表:
定义测试_订单_删除
Test_stock.py #库存相关
TestStock:类
def测试_库存_添加:
def测试_库存_列表:
定义测试_库存_减少
1.按ascii文件名排序:测试_订单测试_库存测试_用户
2 .测试_订单_创建测试_订单_列表测试_订单_删除测试_库存_添加测试_库存_列表…
2.如果pytest-order插件在单个。py测试文件,文件中添加了顺序的测试用例会先执行,没有添加的会按1的顺序执行,这样单元测试的顺序会在多个文件中交叉。(因此,在使用pytest-order插件的情况下,对于单个。py文件,建议每个案例都要有order=x,且x不应该相同)
Test_user.py #用户相关
类测试用户:
@pytest.mark.run(order=1)
定义测试_用户_创建:
定义测试_用户_登录:
@pytest.mark.run(order=2)
定义测试_用户_删除
Test_order.py #订单相关
类别TestOrder:
def测试_订单_创建:
定义测试_订单_列表:
定义测试_订单_删除
Test_stock.py #库存相关
TestStock:类
def测试_库存_添加:
def测试_库存_列表:
定义测试_库存_减少
1.因为在test_user文件的案例中使用了pytest-order插件,所以首先执行按顺序排序的案例。
2 .测试_用户_创建测试_用户_删除测试_订单_创建…测试_库存_添加…测试_用户_删除
3.如果多个.py文件使用了pytest-order插件,如果每个order指定的顺序不冲突,就按照order指定的顺序执行,如果有冲突,那就会出现在多个.py文件中交叉执行,可能不符合我们预期。
Test_user.py #用户相关
类测试用户:
@pytest.mark.run(order=1)
def test_user_create:
def test_user_login:
@pytest.mark.run(order=2)
def test_user_delete
test_order.py # 订单相关
class TestOrder:
def test_order_create:
def test_order_list:
def test_order_delete
test_stock.py # 库存相关
class TestStock:
@pytest.mark.run(order=1)
def test_stock_add:
@pytest.mark.run(order=2)
def test_stock_list:
def test_stock_reduce
1.test_stock 和 test_user 存在 order 冲突,所以按照文件名ascii顺序排序
2.test_stock_add > test_user_create > test_stock_list > test_user_delete > order相关 > test_stock_reduce > test_user_login
4.多个py文件修改按照文件名ascii码排序方式
需求:不要再多个文件中来回执行case,保证测试用例顺序为:用户模块-->订单模块-->库存模块
方式一:通过修改文件名,使得文件名ascii码排序,和我们测试case执行顺序一致,确保case中没有pytest-order插件
test_1_user.py # 用户相关
但通常情况下,我们.py文件是根据模块去命名的,所以通过修改文件名实现我们预期的执行顺序,并不是很友好
方式二:如果使用pytest-order插件来控制,必须保证每个文件的order值是不能重复的,后一个.py文件order最小值必须大于前一个.py文件最大值,这样就可以确保文件执行顺序
这样在增加测试用例后,就可能需要修改很多order顺序
test_user.py # 用户相关
方式三:通过pytest提供的勾子方法pytest_collection_modifyitems,对case执行顺序进行修改
# conftest.py
用户只需要将其新增的测试模块class按照预期的顺序添加到appoint_classes中即可,简单灵活
总结
到此这篇关于pytest多文件执行顺序控制的文章就介绍到这了,更多相关pytest多文件执行顺序内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。