当前位置: 首页 > news >正文

从0开始python学习-33.夹具@pytest.fixture(scope=““,params=““,autouse=““,ids=““,name=““)

目录

1. 创建夹具

1.1 pytest方式

1.2 unittest方式

2. 使用夹具

2.1 通过参数引用

2.2 通过函数引用

3. 参数详解

3.1 scope:作用域

3.2 params-参数化

3.3 autouse=True表示自动使用,默认为False

3.4 ids:设置变量名

 3.5 name:别名


1. 创建夹具

1.1 pytest方式

@pytest.fixture()
def test_a():print('case执行之前执行')yieldprint('case执行之后执行')

1.2 unittest方式

class Test:def setup_method(self):print('setup_method:case执行之前执行--用例之前执行一次')def teardown_method(self):print('teardown_method:case执行之后执行--每个case执行之前均执行')def setup_class(self):print('setup_class:case执行之前执行--每个case执行之后均执行')def teardown_class(self):print('teardown_class:case执行之后执行--全部用例执行完了之后才执行')

2. 使用夹具

2.1 通过参数引用

2.2 通过函数引用

3. 参数详解

@pytest.fixture(scope="",params="",autouse="",ids="",name="")

3.1 scope:作用域

表示标记方法的作用域:function(默认),class,module,package,session

session > module > class > function

function:每个用例都有一个

@pytest.fixture(scope='function')
def test_a():print('之前执行')yieldprint('之后执行')
class Test_A:def test_1(self,test_a):print('test_1')def test_2(self,test_a):print('test_2')
class Test_B:def test_3(self,test_a):print('test_3')

class:每个class 共用一个

@pytest.fixture(scope='class')
def test_a():print('之前执行')yieldprint('之后执行')
class Test_A:def test_1(self,test_a):print('test_1')def test_2(self):print('test_2')
class Test_B:def test_3(self):print('test_3')

下面就不举例了:module:每个文件共用一个;package:每个包共用一个;session:全局共用一个

3.2 params-参数化

支持列表[]、元组()、字典列表[{},{}],字典元组({},{})

fixture引用外部参数

param = ['111',[1,2],('a','b')]
@pytest.fixture(params=param)
def test_a(request):test = request.paramreturn testdef test_1(test_a):print(test_a)

fixture标签直接进行参数化

@pytest.fixture(params=[1,2,'aaaa'])
def test_b(request):test1 = request.paramreturn test1
def test_2(test_b):print(test_b)

 

3.3 autouse=True表示自动使用,默认为False

autouse=True时无论是否使用都会被使用

@pytest.fixture(autouse=True)
def test_a():print('test_a')def test_1():print('test_1')

autouse=False时必须要手动调用了才会被使用

@pytest.fixture(autouse=False)
def test_b():print('test_b')def test_2(test_b):print('test_2')

3.4 ids:设置变量名

当使用params参数化时,给每一个值设置一个变量名

param = ['111',[1,2],('a','b')]
@pytest.fixture(params=param,ids=['user1','user2','user3'])
def test_a(request):test = request.paramreturn testdef test_1(test_a):print(test_a)

 3.5 name:别名

表示被@pytest.fixture标记的方法取一个别名,当取了别名后,原来的名称就不能用了

@pytest.fixture(name='yyyy')
def test_a():print('11111')def test_1(yyyy):print('test_1')
def test_2(test_a):print('test_1')

http://www.lryc.cn/news/232438.html

相关文章:

  • vue3别名配置(vite)
  • 初学UE5 C++①
  • ElasticSearch6.8.1 常见错误
  • wx.canvasToTempFilePath生成图片保存到相册
  • HDU1276:士兵队列训练问题 ← STL queue
  • JS 读取excel文件内容 和 将json数据导出excel文件
  • ASP.NET限流器的简单实现
  • 汇编语言循环左移和循环右移如何实现的,详细的比喻一下
  • ChromeDriver 各版本下载地址
  • 计算机网络之物理层
  • 沉浸式航天vr科普馆VR太空主题馆展示
  • AI电话机器人能否代替人工?优缺点介绍
  • Java —— 多态
  • UI自动化测试(弹出框,多窗口)
  • Python爬虫程序网络请求及内容解析
  • C嘎嘎模板
  • 数据结构和算法八股与手撕
  • windiws docker 部署jar window部署docker 转载
  • 使用git上传代码至gitee入门(1)
  • 分类预测 | MATLAB实现基于Isomap降维算法与改进蜜獾算法IHBA的Adaboost-SVM集成多输入分类预测
  • 如何解决3d max渲染效果图全白这类异常问题?
  • 振南技术干货集:比萨斜塔要倒了,倾斜传感器快来!(2)
  • 图形学 -- Geometry几何
  • opencv中边缘检测的方法
  • DigitalVirt 洛杉矶 CMIN2 VPS 测评
  • Qt DragDrop拖动与放置
  • thinkphp8 多级控制器调用
  • 设计测试用例的6种基本原则
  • java的Exception.getMessage为null
  • EXTI (2)