pytest接口测试之fixture传参数request的使用
作者:果er 发布时间:2023-03-19 07:40:40
标签:pytest,fixture,request
目录
前言
一、函数传参
request参数
request传两个参数
前言
有的测试用例,需要依赖于某些特定的case才可以执行,比如登录获取到token,后面的请求都需要带着,为了确保在同一用户,必须带着和登录时获取的cookies。
大部分的用例都会先登录,就需要把登录单独抽出来写个函数,其他用例全部调用这个登录函数就行,但是登录的账号不能写死。
一、函数传参
单独写个登录函数,传2个参数user和password,写用例的时候调用登录函数,输入几组user、password参数化。需要用到装饰器$pytest.mark.parametrize,里面写两个参数
第1个参数是字符串,多个参数中间用逗号隔开
第2个参数是list,多组数组用元组类型
import pytest
def login(user, password):
'''登录函数'''
print('用户名:%s' % user)
print('密码:%s' % password)
return 'hello'
login_data = [('admin', '123456'), ('admin','')]
# 装饰器
@pytest.mark.parametrize('user, password', login_data)
def test_login(user, password):
'''登录测试用例'''
result = login(user, password)
assert result == 'hello'
if __name__ == '__main__':
pytest.main('-s', 'day0110_fixture.py')
'''
运行结果
============================= test session starts =============================
platform win32 -- Python 3.6.6, pytest-4.5.0, py-1.8.0, pluggy-0.13.1
rootdir: F:\python work\youyou_class\study_pytestcollected 2 items
day0110_fixture.py .用户名:admin
密码:123456
.用户名:admin
密码:
[100%]
========================== 2 passed in 0.02 seconds ===========================
'''
request参数
request就是我需要什么东西,用来接受参数,用到@pytest.fixture装饰器,传参就用默认的request参数,user = request.param 这一步是接收传入的参数。
import pytest
# 测试账号数据
test_data = ["admin1", "admin2"]
@pytest.fixture(scope="function")
def login(request):
user = request.param
print("登录账户:%s"%user)
return user
@pytest.mark.parametrize("login", test_data, indirect=True)
def test_login(login):
"""登录用例"""
a = login
print("测试用例中login的返回值:%s" % a)
assert a != ""
indirect=True 参数是为了把login当作一个函数去执行,而不是一个参数
request传两个参数
如果用到@pytest.fixture,里面用2个参数情况,可以把多个参数用一个字典去存储,这样最终还是只传一个参数。
不同的参数再从字典里面取对应key值就行,如: user = request.param[“user”]
#_*_coding:utf-8_*_
# 作者 :Administrator
# 创建时间 :2020/1/1018:18
# 文件 :day0110_fixture.py
import pytest
@pytest.fixture(scope='function')
def login(request):
'''登录函数'''
user = request.param['user']
password = request.param['password']
print('用户名:%s' % user)
print('密码:%s' % password)
return 'hello'
login_data = [{'user': 'admin', 'password': '123456'}, {'user': 'admin', 'password': '1'}]
# 装饰器
@pytest.mark.parametrize('login', login_data, indirect=True)
def test_login(login):
'''登录测试用例'''
result = login
assert result == 'hello'
if __name__ == '__main__':
pytest.main('-s', 'day0110_fixture.py')
'''
运行结果:
============================= test session starts =============================
platform win32 -- Python 3.6.6, pytest-4.5.0, py-1.8.0, pluggy-0.13.1
rootdir: F:\python work\youyou_class\study_pytestcollected 2 items
day0110_fixture.py 用户名:admin
密码:123456
.用户名:admin
密码:1
. [100%]
========================== 2 passed in 0.02 seconds ===========================
'''
来源:https://blog.csdn.net/qq_42098424/article/details/103874175


猜你喜欢
- 题目描述1260. 二维网格迁移 - 力扣(LeetCode)给你一个 m 行 n 列的二维网格 grid 和
- 近期将公司的MySQL架构升级了,由原先的一主多从换成了DRBD+Heartbeat双主多从,正好手上有一个电子商务网站新项目也要上线了,用
- 前言最近遇到了一个问题:我的server和client不是在一个时区,server时区是EDT,即美国东部时区,client,就是我自己的电
- 前言tensorflow提供了多种读写方式,我们最常见的就是使用tf.placeholder()这种方法,使用这个方法需要我们提前处理好数据
- 思路:使用socket传输文件过程中,如果单次传输每次只能发送一部分数据,如果针对大文件,一次传输肯定是不行的,所以需要我们在传输的时候提前
- <ul> <li> <input type="radio" name="radi
- 本文实例讲述了Python图像的增强处理操作。分享给大家供大家参考,具体如下:python中PIL模块中有一个叫做ImageEnhance的
- 本文实例讲述了GO语言延迟函数defer用法。分享给大家供大家参考。具体分析如下:defer 在声明时不会立即执行,而是在函数 return
- 错误出现:导入数据时出现“SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:
- vue通过路由传值在许多跳转的同时需要完成携带参数,并且在刷新的同时不丢失参数。$router:是路由操作对象,只写对象$route:路由信
- format()函数"""测试 format()函数"""def t
- 在已经发表的系列文章中我们已经讨论了两个ASP对象:Application对象和Session对象,因此能够访问Application对象和
- 如何远程注册DLL?试试下面的代码:<% Response.Buffer = True %&g
- detach官方文档中,对这个方法是这么介绍的。 detach = _add_docstr(_C._TensorB
- 六步安装Mysql(免安装包的才可以选安装位置),供大家参考,具体内容如下第一步:下载MySQL压缩包mysql下载路径直接点击链接也可以下
- 这篇文章主要介绍了python3 pathlib库Path类方法总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习
- 软件版本及平台:MySQL-5.7.17-winx64,win7家庭版一、下载安装包https://cdn.mysql.com//Downl
- 代码如下:SELECT * FROM (SELECT TRUNC(SYSDATE, 'mm') + ROWNUM
- Import os; -- Python自带print(os.getcwd()) -- 获得当前工作目录os.chdir('/Use
- 在本教程中,我将指导您如何编写代码,以使用具有基于表单的身份验证的Spring安全API来保护Spring Boot应用程序中的网页。用户详