pytest用法,pytest python
@ pytest . mark . pytest-dependency decorator of test设置测试用例之间的依赖关系_mb62abf3afb54fb _ blog的技术博客
1.前言:这是一个pytest第三方插件,主要解决用例之间的依赖关系。如果依赖上下文测试用例失败,后续用例将被标记为跳过执行,这相当于执行pytest.mark.skip
2.依赖关系可用于以下领域:会话、包、模块和类。
3.安装pip安装pytest-依赖项
4.官方例子:pytest-de dependency
在TestCase类下编写的基本用法用例:
1.首先在用例的开头标记一个decoration @ pytest . mark . dependency(),表示这个用例为主条件。如果这个用例失败,与之相关的用例将会跳过执行。
2.在相关的用例上,也用参数标记decorator @ py test . mark . dependency()。依赖项接受的参数是相关的依赖用例名称。
3.您还可以在depends中通过别名指定用例名称。
测试类下函数路径的实现【通过指定测试类下的测试用例方法(相当于使用nodeid,即测试用例路径的方式)】
运行结果:
函数名依赖的实现【通过指定需要依赖测试函数的测试方法名】
通过别名指定[通过为指定的依赖项设置依赖项名称(即,为依赖用例设置别名)]
官方API定义依赖范围的详细说明我们可以看到,scope可以接受四种类型的参数定义(“session”、“package”、“module”或“class”)
Scope=class 作用于所属类,外部类不会关联。
运行结果:
Scope=module 不传递Scope参数,即默认参数是module,它作用于当前的py文件。只会找到当前文件的合格文件名,不会依赖类中同名的方法。
运行结果:
Scope=package 作用于当前目录同级的依赖函数,跨目录找不到依赖函数。
运行结果:
scope=“session”在范围上是全局的,可以跨目录调用。但是,必须首先执行依赖用例,例如示例中的test01,否则,例程执行将会跳过!
运行结果:
注意,如果依赖上下文测试用例用@ pytest . mark . parameter iz参数化,测试函数的方法名依赖就不能实现测试用例的依赖。[因为通过了。pytest_cache文件,我们知道测试用例的nodeid就是路径用例参数化的参数。当在依赖上下文测试用例中使用用例参数化时,测试用例的nodeid不再简单地特定于测试方法,而是特定于示例的参数]
当我们使用测试方法依赖时,可以在依赖参数化用例的同时,将依赖测试方法的完整nodid转移到依赖测试方法的depnds参数,如下:。
(3)通过为依赖和依赖测试方法指定别名来依赖上下文用例,如下所示:(2)正常。
用例之间的依赖关系一般出现在类似于主业务流程的测试脚本中(即一个模块中可能有多个测试方法,测试方法之间有业务关系),所以一般来说,用例的参数化中只有一个用例(即测试方法虽然参数化了,但仍然相当于只是一个用例:比如生成了一个特定的测试数据)。
当然,如果依赖测试方法中的测试用例参数化后形成了多个测试用例,那么多个测试用例就是依赖的,只有当依赖测试用例的所有执行结果都通过时,才会执行依赖测试方法,否则仍然会跳过依赖测试方法。
例如:异常:test_d测试用例依赖于test_a测试用例,test_b测试用例依赖于test_d测试用例,test_c测试用例依赖于test_b测试用例。
导入pytest
从tools.common.log_process导入*
@ record(OS . path . basename(_ _ file _ _)。拆分(.)[0])
@pytest.mark.dependency()
@ pytest . mark . parameter ize( data ,[1])
定义测试_a(数据):
#数据=1
断言数据==1
@ record(OS . path . basename(_ _ file _ _)。拆分(.)[0])
@ pytest。马克。依赖项(depends=[ test _ a ])
定义测试_d():
断言为真
@记录(OS。路径。basename(_ _ file _ _).拆分(.)[0])
@ pytest。马克。依赖项(depends=[ test _ d ])
定义测试_b():
断言 ooo==oo
@记录(OS。路径。basename(_ _ file _ _).拆分(.)[0])
@ pytest。马克。依赖项(depends=[ test _ b ])
定义测试_c():
断言“微光”是“微光”运行结果:
正常:# -*-编码:utf-8 -*-
导入pytest
从tools.common.log_process导入*
@记录(OS。路径。basename(_ _ file _ _).拆分(.)[0])
@pytest.mark.dependency()
@ pytest。马克。参数ize( data ,[1])
定义测试_a(数据):
#数据=1
断言数据==1
@记录(OS。路径。basename(_ _ file _ _).拆分(.)[0])
@ pytest。马克。依赖项(depends=[ test _ a[1]])
定义测试_d():
断言为真
@记录(OS。路径。basename(_ _ file _ _).拆分(.)[0])
@ pytest。马克。依赖项(depends=[ test _ d ])
定义测试_b():
断言 ooo==oo
@记录(OS。路径。basename(_ _ file _ _).拆分(.)[0])
@ pytest。马克。依赖项(depends=[ test _ b ])
定义测试_c():
断言“微光”是“微光”运行结果:
正常# -*-编码:utf-8 -*-
导入pytest
从tools.common.log_process导入*
@记录(OS。路径。basename(_ _ file _ _).拆分(.)[0])
@ pytest。马克。依赖项(name= a )
@ pytest。马克。参数ize( data ,[1])
定义测试_a(数据):
#数据=1
断言数据==1
@记录(OS。路径。basename(_ _ file _ _).拆分(.)[0])
@ pytest。马克。依赖项(名称= b ,依赖项=[a])
定义测试_d():
断言为真
@记录(OS。路径。basename(_ _ file _ _).拆分(.)[0])
@ pytest。马克。依赖项(name= c ,depends=[b])
定义测试_b():
断言 ooo==oo
@记录(OS。路径。basename(_ _ file _ _).拆分(.)[0])
@ pytest。马克。依赖项(depends=[ c ])
定义测试_c():
断言“微光”是“微光”运行结果:
去期待陌生,去拥抱惊喜。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。