分享Pytest fixture参数传递的几种方式
作者:aduocd 发布时间:2023-06-15 01:25:28
标签:Pytest,fixture,参数,传递,方式
1.背景
最近使用Pytest
中的fixture
和conftest
时,遇到需要在conftest中的setup和teardown方法里传递参数。这里记录下几种实现的方式。
2.fixture中参数传递的几种方式
1)fixture中的函数返回
conftest.py
@pytest.fixture(scope="class")
def setup_func():
test_data = [{"k1": "v1"}, {"k2": "v2"}]
return test_data
testcase.py
def test_func(setup_func)
print(setup_func)
结果:
执行一条用例,输出:[{"k1": "v1"}, {"k2": "v2"}]
2)与@pytest.mark.parametrize的结合
conftest.py
@pytest.fixture(scope="class")
def setup_func(request):
print(request.param)
return request.param
testcase.py
test_data = [{"k1": "v1"}, {"k2": "v2"}]
@pytest.mark.parametrize('setup_func', test_data, indirect=True)
def test_func(setup_func)
setup_func
结果:
执行两条用例,分别输出:{"k1": "v1"}, {"k2": "v2"}
注:
当 indirect=False 时,“setup_func”被当成普通变量;
当 indirect=True 时,“setup_func”被当成函数执行,且 “test_data”作为函数中的参数传递
3)fixture中的方法嵌套传递
confitest.py
@pytest.fixture(scope="class")
def setup_func1():
test_data1 = [{"k1": "v1"}, {"k2": "v2"}]
return test_data1
@pytest.fixture(scope="class")
def setup_func2(setup_func1):
a = setup_func1
b = [{"k11": "v11"}, {"k22": "v22"}]
return (a, b)
testcase.py
def test_aaa(self, setup_func2):
print(setup_func2)
结果:
执行一条用例,输出:([{'k1': 'v1'}, {'k2': 'v2'}], [{'k11': 'v11'}, {'k22': 'v22'}])
4)测试方法中产生数据后,直接调用teardown
@python.fixture(scope="class")
def teardown_func():
def _teardown_func(param1, param2):
func()
return _teardown_func
来源:https://blog.csdn.net/aduocd/article/details/124106135
0
投稿
猜你喜欢
- 对numpy 矩阵进行通道间求均值给定一个3x2x2得矩阵,得到一个2x2的矩阵,其中对应元素是通道间的均值import numpy as
- 简介桥接模式又叫桥梁模式,属于结构型模式。目的是将抽象与实现分离,使它们都可以独立的变化,解耦。继承有很多好处,但是会增加耦合,而桥接模式偏
- 今天不小心又点了收藏夹里Google的新首页风格的地址,赫然发现又变了!从这个页面上线以来,偶尔会去看看,短短一年的时间,已经变换了至少三次
- 本文向大家分享了几段Python生成数字图片的代码,喜欢的朋友可以参考。具体如下:最终版本# -*- coding:utf-8 -*-fro
- 登录、注销和登录限制:登录在使用authenticate进行验证后,如果验证通过了。那么会返回一个user对象,拿到user对象后,可以使用
- Python自定义邻接表图类图抽象数据类型(ADT)的术语顶点(Vertex):也称节点(node),是图的基础部分。具有名称标识&
- 一、前言本文使用的是 kaggle 猫狗大战的数据集:https://www.kaggle.com/c/dogs-vs-cats/data训
- PyAutoGUI是一个Python语言的键鼠自动化库,简单来说和按键精灵的功能一样。但是因为是Python的类库,所以可以使用Python
- 字符串索引示意图字符串切片也就是截取字符串,取子串Python中字符串切片方法字符串[开始索引:结束索引:步长]切取字符串为开始索引到结束索
- 函数内省(function introspection)除了__doc__属性, 函数对象还有很多属性,对于下面的函数,可以使用dir()查
- 思维导图:效果(语句版):源码:# -*- coding: utf-8 -*-"""Created
- 今早打开 腾讯ISD的博客 ,看到一篇新的文章,《迷你屋视觉规范简介》,赶紧看了来学习。不过给我抓到问题咯,臭鱼不介意我在这说下吧:这套规范
- 1. 哈希算法基础1.1 哈希算法的定义哈希算法(Hash Algorithm)是一种将任意长度的输入数据映射为固定长度哈希值的算法。它具有
- SQL2000的SA密码不能更改的解决方法,在更改sa的密码出现下面的错误:Error 21776: [SQL-DMO] The name
- prototype 是在 IE 4 及其以后版本引入的一个针对于某一类的对象的方法,而且特殊的地方便在于:它是一个给类的对象添加方法的方法!
- 最近经常有收到MySQL实例类似内存不足的报警信息,登陆到服务器上一看发现MySQL 吃掉了99%的内存,God !有时候没有及时处理,内核
- 1. 概述JSON (JavaScript Object Notation)是一种使用广泛的轻量数据格式. Python标准库中的json模
- 今天一同事需要整理http://ics.cnvd.org.cn/工控漏洞库里面的信息,一看960多个要整理到什么时候才结束。所以我决定写个爬
- 建造者模式:将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。基本思想某类产品的构建由很多复杂组件组成;这些组件中的
- 首先得明确包和模块。包:在一个目录下存在__init__.py,那么该目录就是一个包。模块:一个.py文件就是一个模块。我们可以通过from