Pytest 学习(二十五)- 解决pytest参数化测试标题都一样问题
2024-08-28 06:49:21
前言
使用参数化测试化后,allure的报告如下显示:
源代码如下:
# -*- coding: utf-8 -*-
# @Time : 2020/12/13 17:27
# @Author : longrong.lang
# @FileName: test_param_title.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
import allure
import pytest
@pytest.fixture()
def loginTo(request):
# 传入参数,登录
param = request.param
print(f"\nuserName : {param['userName']} ,passWord : {param['passWord']}")
# 登录成功,返回
return {"code": "0", "msg": "success!"}
data = [{"userName": "jojo", "passWord": "1"},
{"userName": "rongrong", "passWord": "1"},
{"userName": "lilei", "passWord": "1"}
]
@allure.story("讲述登录成功,返回成功的故事!")
@allure.title("测试登录接口")
@pytest.mark.parametrize("loginTo", data, indirect=True)
def test_loginTo(loginTo):
assert loginTo['msg'] == 'success!'
从代码看出,其实就是@allure.title("测试登录接口"),写死的呀。
如何解决
那么怎么搞?
这个问题问的好呀,动态的标题可以实现吗?试试呗?
方案一
直接拼接loginTo
示例代码如下:
# -*- coding: utf-8 -*-
# @Time : 2020/12/13 17:27
# @Author : longrong.lang
# @FileName: test_param_title.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
import allure
import pytest
@pytest.fixture()
def loginTo(request):
# 传入参数,登录
param = request.param
print(f"\nuserName : {param['userName']} ,passWord : {param['passWord']}")
# 登录成功,返回
return {"code": "0", "msg": "success!"}
data = [{"userName": "jojo", "passWord": "1"},
{"userName": "rongrong", "passWord": "1"},
{"userName": "lilei", "passWord": "1"}
]
@allure.story("讲述登录成功,返回成功的故事!")
@allure.title("测试登录接口 {loginTo}")
@pytest.mark.parametrize("loginTo", data, indirect=True)
def test_loginTo(loginTo):
assert loginTo['msg'] == 'success!'
allure报告
这样会使得报告,更具可读性,直观一些
方案二
使用元祖来做参数化,加一个参数为标题
示例代码如下:
# -*- coding: utf-8 -*-
# @Time : 2020/12/13 17:27
# @Author : longrong.lang
# @FileName: test_param_title.py
# @Software: PyCharm
# @Cnblogs :https://www.cnblogs.com/longronglang
import allure
import pytest
data = [("jojo", "1", "登录成功的用例"),
("rongrong", "1", "登录成功的用例"),
("lilei", "1", "登录失败的用例")
]
@allure.story("讲述登录成功,返回成功的故事!")
@allure.title("测试登录接口 {title}")
@pytest.mark.parametrize("userName,password,title", data)
def test_loginTo(userName, password, title):
print(userName + "\t" + password + "\t" + title)
allure报告
这种做法的优点
- 可以自定义各式各样的标题
- 单独一个值去维护标题值
- 可读性比较好,容易维护
最新文章
- JS-concat
- pymongo 3.3 使用笔记
- Multipart to single part feature
- Linux 下zip包的压缩与解压
- velocity merge作为工具类从web上下文和jar加载模板的两种常见情形
- java实现将资源文件转化成sql语句导入数据库
- JBOSS常用端口说明
- 第六章_PHP数组
- linux下php多版本的并存实现
- QueryString和BASE64
- File,FileInputStream,FileReader,InputStreamReader,BufferedReader 的使用和区别
- VIM于换行EOL的思考
- web服务器,应用程序服务器,http服务器的区别
- LeetCode - 540. Single Element in a Sorted Array
- Android Framework 学习和需要学习的内容
- 基于xml 实现动态加载权限功能树列表---EFSFrame企业级开发架构
- RabbitMQ Linux(Redhat6.5)安装(二 )
- Qt QComBox 文本框输入itemText &;&; 文本框查找item &;&; 本文框添加Item &;&;设置显示Item数量
- Android开发 - 掌握ConstraintLayout(九)分组(Group)
- Vue-认识状态管理vuex