网站首页 > 技术教程 正文
一、前言
这篇文章呢,小编想讲讲pytest框架中的parametrize、fixture、request的混合使用,我之前也有一些讲pytest的文章大家有兴趣的话可以去看看哟,废话不多说了我们直接进入正题吧,对了喜欢的可以点点关注哟。
二、传单个参数
即一个参数一个值,示例代码如下:
python
# 传单个参数
@pytest.fixture()
def getuser(request):
user = request.param
print(f" 获取用户: {user}")
return user
data = ["lilei", "jojo", "hanmeimei"]
# 用英文哈,中文会被加密
ids = [f" mark input :{user} " for user in data]
@pytest.mark.parametrize("getuser", data, ids=ids, indirect=True)
class TestClass(object):
def test_getuser(self, getuser):
print(f"输出用户信息:{getuser}")
运行结果如下:
说明:
仅当 indirect=True,getuser才会当成一个函数去执行,而不是一个参数,并将data当做参数传入函数,test_getuser(self, getuser),这里的getuser是获取fixture返回的值。
三、传多个参数
即结合字典的使用,示例代码如下:
python
# 传多个参数
@pytest.fixture()
def getlogins(request):
param = request.param
print(f" 获取用户名: {param['username']} 获取密码:{param['password']}")
return param
data = [{"username": "jojo", "password": "123456"},
{"username": "hanmeimei", "password": "123456"},
{"username": "lilei", "password": "123456"}]
@pytest.mark.parametrize("getlogins", data, indirect=True)
def test_getlogin(getlogins):
print(f"用户名:{getlogins['username']} 密码:{getlogins['password']}")
运行结果如下:
四、一个装饰器加多个fixture
一个装饰器的意思就是,数据源是一个,这次我们用元祖来做数据源,示例代码如下:
python
# 一个装饰器+多个fixture
@pytest.fixture(scope="module")
def getusername(request):
username = request.param
print(f" username is {username}")
return username
@pytest.fixture(scope="module")
def getpassword(request):
password = request.param
print(f" password is {password}")
return password
data = [("jojo", "1"), ("lilei", "123654")]
@pytest.mark.parametrize("getusername,getpassword", data, indirect=True)
def test_getUserinfo(getusername, getpassword):
print(f"用户名:{getusername} 密码:{getpassword}")
运行结果如下:
五、多个装饰器+多个fixture
就是多个数据源,这次用list来做演示,示例代码如下:
python
# 多个装饰器+多个fixture
@pytest.fixture()
def users(request):
user = request.param
print(f" 用户名:{user}")
return user
@pytest.fixture()
def pwds(request):
pwd = request.param
print(f" 密码:{pwd}")
return pwd
data1 = ["lilei", "hameimei", "jojo"]
data2 = ["1", "2", "3"]
@pytest.mark.parametrize("users", data1, indirect=True)
@pytest.mark.parametrize("pwds", data2, indirect=True)
def test_getuserinfo(users, pwds):
print(f"用户名为:{users} 密码为:{pwds}")
运行结果如下:
注意:
当多个参数时,需要用 变量=request.param来接收参数,否则不好用哦。
今天的文章就分享到这里了,喜欢我的可以关注我哟,也可以点赞评论加收藏哟。
猜你喜欢
- 2024-11-17 这些年,英国女王就靠这件事赚了6000多万元!
- 2024-11-17 主题分类词汇 14 (Industry 工业)
- 2024-11-17 工件的安装与夹具,建议收藏
- 2024-11-17 Pytest fixture及conftest详解
- 2024-11-17 pytest框架进阶自学系列 | 在不同的层级上重写fixture
- 2024-11-17 仕诺康丨全程导板工具盒
- 2024-11-17 Pytest的内置fixture(七)
- 2024-11-17 你会买吗?可以边走边玩的Switch专用手柄支架Fixture S1开启众筹
- 2024-11-17 思林杰获得外观设计专利授权:“充电座(BBUChargingFixture)”
- 2024-11-17 软件测试 | pytest测试框架纸fixture进阶
你 发表评论:
欢迎- 最近发表
-
- 阿里P8大佬总结的Nacos入门笔记,从安装到进阶小白也能轻松学会
- Linux环境下,Jmeter压力测试的搭建及报错解决方法
- Java 在Word中合并单元格时删除重复值
- 解压缩软件哪个好用?4款大多数人常用的软件~
- Hadoop高可用集群搭建及API调用(hadoop3高可用)
- lombok注解@Data没有toString和getter、setter问题
- Apache Felix介绍(apache fineract)
- Spring Boot官方推荐的Docker镜像编译方式-分层jar包
- Gradle 使用手册(gradle详细教程)
- 字节二面:为什么SpringBoot的 jar可以直接运行?
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)