fixtrue基础之params参数实现简单参数化
前言
我的努力求学没有得到别的好处,只不过是愈来愈发觉自己的无知。——笛卡儿
如果大家越来越在一个领域思考的话,应该会有如上的认知。
一、params参数是什么?
- params参数是fixture方法中的其中一个参数;(ps:为了防止有些朋友单独看这篇博文才写了这句)
- params参数接受列表类型的数据 实现参数化功能。
二、关于参数化的理解
- 相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为进行了完全的分离,这样的测试脚本设计模式叫做数据驱动;
- 参数化就是数据驱动实现的一种表现;
- 比如登录功能模块,使用3组不同的用户名和密码进行登录来验证登录功能模块的正确性,可以把这组不同的用户名和密码理解为参数化的数据;
- 为什么要使用不同的数据来对相同模块功能进行验证,因为这样测试会更充分一些,也可以检查程序是否处理了各种异常情况(如错误的用户名、错误的密码等)。
三、params参数应用
- 3.1 简单应用params参数
import pytest
user_list = ['xiaoming','xiaohong','xiaoli']
@pytest.fixture(params=user_list) #params参数接收列表类型数据
def setUp(request): #传参默认request参数
return request.param
def testadd(setUp):
print('\n用户名:'+ str(setUp))
assert1
if__name__=='__main__':
pytest.main(["-s"])
- 3.2 思维发散一点,一组参数包含多个值
import pytest
#使用包含字典的列表传值,解决一组参数只有一个的问题
user_list = [{'username':'xiaoming','password':'666666'},
{'username':'xiaohong','password':'888888'},
{'username':'xiaoli','password':'123456'}
]
@pytest.fixture(params=user_list)
def setUp(request):
returnrequest.param
def testadd(setUp):
print('\n用户名:'+ str(setUp['username']),end=' ') #setUp['username']取用户名
print('密码:'+ str(setUp['password'])) #setUp['password']取密码
assert 1
if__name__=='__main__':
pytest.main(["-s"])
上述两个实例小结:
- params参数只要求是列表类型的数据;
- 传参默认request参数不能更改其它名字;
- 有了示例2,大家其实可以想到把测试的期望结果也做成参数化的形式
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了