pytest-依赖测试

背景

我们在接口自动化过程中,总会存在依赖性较强的场景,比如批价->下单->支付,具备强依赖关系,这个时候就用到了依赖测试。
参考 https://blog.csdn.net/dingding_ting/article/details/117200319

1、安装:

pip install pytest-dependency

2、用法:

第一步:需要在用例开始位置写上@pytest.mark.dependency(),代表这条用例作为主条件,如果这条用例失败,关联它的用例会跳过执行。
第二步:在被关联的用例上,也打上带参数的装饰器@pytest.mark.dependency(),参数depends可写关联的依赖用例名。在depends也可以用别名的方式指定用例名

(1)在函数中执行

在test_01函数前我们加上了@pytest.mark.dependency(),
在test_02函数前也写了@pytest.mark.dependency(depends=["test_01"])

(2)在类中执行

在类中执行,不能直接写方法名,需要加上类名::方法名或者别名
在test_01函数前我们加上了@pytest.mark.dependency(),
在test_02函数前也写了@pytest.mark.dependency(depends=["类名::test_01"])

2、依赖范围:

(1)class
作用于所属的类,外部类不会被关联
@pytest.mark.dependency(depends=["test_01"],scope="class")

(2)module
默认参数是’module’,作用于当前文件。只会查找当前文件的符合条件的文件名,类里同名的方法不会被依赖。
@pytest.mark.dependency(depends=["test_01"],scope="module")

(3)package
作用于当前目录同级的依赖函数,跨目录无法找到依赖的函数。
例如在dep2目录下,创建了test_dep_01.py和test_dep_02.py
@pytest.mark.dependency(depends=["xxx.py::类名::test_01"],scope="package")

(4)session
作用域全局,可跨目录调用。但被依赖的用例必须先执行
@pytest.mark.dependency(depends=["xx/xx.py::类名::test_01"],scope="session")
支持直接在类名上方添加,那么类下面所有方法都不执行

3、实战

场景一 相同文件下用例依赖-class

比如:依赖用例1满足条件(学员详情列表有数据),再执行用例2(检查学习进度)


 

 

 

class-被依赖方

 

 

 

class-依赖方

场景二 不同目录下用例依赖-session

比如:依赖用例1满足条件(学习进度100%),再执行用例2(新建完成课程的标签)


 

 

 

session-被依赖方
 

 

 

session-依赖方



posted @ 2023-02-28 22:24  我是小菜鸡丫丫  阅读(208)  评论(0编辑  收藏  举报