Pytest 系列(28)- 参数化 parametrize + @allure.title() 动态生成标题
如果你还想从头学起Pytest,可以看看这个系列的文章哦!
https://www.cnblogs.com/poloyy/category/1690628.html
前言
- 参数化 @pytest.mark.parametrize 的学习:https://www.cnblogs.com/poloyy/p/12675457.html
- 默认 allure 报告上的测试用例标题不设置默认就是用例名称,这样可读性不高
- 当结合 @pytest.mark.parametrize 参数化完成数据驱动时,如果标题写死,这样可读性也不高
- 所以我们希望标题可以动态的生成,来看看如何做吧
参数化无标题的栗子
测试代码
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- """
- __title__ =
- __Time__ = 2020/10/28 15:08
- __Author__ = 小菠萝测试笔记
- __Blog__ = https://www.cnblogs.com/poloyy/
- """
- import allure
- import pytest
- @pytest.fixture()
- def login(request):
- """登录"""
- param = request.param
- print(f"账号是:{param['username']},密码是:{param['pwd']}")
- # 返回
- return {"code": 0, "msg": "success!"}
- datas = [
- {"username": "name1", "pwd": "pwd1"},
- {"username": "name2", "pwd": "pwd2"},
- {"username": "name3", "pwd": "pwd3"}
- ]
- @allure.story('登录功能')
- @pytest.mark.parametrize('login', datas, indirect=True)
- def test_login1(login):
- """
- 登录测试用例1
- """
- assert login['code'] == 0
allure 报告
标题就是方法名+参数化的数据,看着可读性就不咋滴
参数化有标题写死的栗子
测试代码
将上面的测试代码添加一个 @allure.title 就可以了
- @allure.story('登录功能')
- @allure.title('登录测试用例2')
- @pytest.mark.parametrize('login', datas, indirect=True)
- def test_login2(login):
- """
- 登录测试用例2
- """
- assert login['code'] == 0
allure 报告
因为参数化可以生成三条用例,所以三条用例都用了同一个 title,可读性也不咋滴
参数化使用 ids 的栗子
测试代码
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- """
- __title__ =
- __Time__ = 2020/10/28 15:08
- __Author__ = 小菠萝测试笔记
- __Blog__ = https://www.cnblogs.com/poloyy/
- """
- import allure
- import pytest
- @pytest.fixture()
- def login(request):
- """登录"""
- param = request.param
- print(f"账号是:{param['username']},密码是:{param['pwd']}")
- # 返回
- return {"code": 0, "msg": "success!"}
- datas = [
- {"username": "name1", "pwd": "pwd1"},
- {"username": "name2", "pwd": "pwd2"},
- {"username": "name3", "pwd": "pwd3"}
- ]
- ids = [
- "username is name1,pwd is pwd1",
- "username is name2,pwd is pwd2",
- "username is name3,pwd is pwd3"
- ]
- @allure.story('登录功能')
- @pytest.mark.parametrize('login', datas, ids=ids, indirect=True)
- def test_login1(login):
- """
- 登录测试用例1
- """
- assert login['code'] == 0
allure 报告
参数化动态生成标题的栗子
测试代码
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- """
- __title__ =
- __Time__ = 2020/10/28 15:08
- __Author__ = 小菠萝测试笔记
- __Blog__ = https://www.cnblogs.com/poloyy/
- """
- import allure
- import pytest
- @pytest.fixture()
- def login(request):
- """登录"""
- param = request.param
- print(f"账号是:{param['username']},密码是:{param['pwd']}")
- # 返回
- return {"code": 0, "msg": "success!"}
- datas = [
- {"username": "name1", "pwd": "pwd1"},
- {"username": "name2", "pwd": "pwd2"},
- {"username": "name3", "pwd": "pwd3"}
- ]
- data2 = [
- ("name1", "123456"),
- ("name2", "123456"),
- ("name3", "123456")
- ]
- @allure.story('分别传值')
- @allure.title('登录测试用例2-账号是:{username}-密码是:{pwd}')
- @pytest.mark.parametrize('username,pwd', data2)
- def test_login1(username, pwd):
- """
- 登录测试用例1
- """
- print(username, pwd)
- @allure.story('字典参数化')
- @allure.title('登录测试用例2-{dict}')
- @pytest.mark.parametrize('dict', datas)
- def test_login2(dict):
- """
- 登录测试用例1
- """
- print(dict['username'], dict['pwd'])
- @allure.story('传值进fixture')
- @allure.title('登录测试用例2{login}')
- @pytest.mark.parametrize('login', datas, indirect=True)
- def test_login3(login):
- """
- 登录测试用例2
- """
- assert login['code'] == 0
allure 报告
传入的如果是一个字典则显示完整字典值
参数化动态生成标题最优方案的栗子
测试代码
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- """
- __title__ =
- __Time__ = 2020/10/28 15:08
- __Author__ = 小菠萝测试笔记
- __Blog__ = https://www.cnblogs.com/poloyy/
- """
- import allure
- import pytest
- data = [
- ("name1", "123456", "name1 登录成功"),
- ("name2", "123456", "name2 登录失败"),
- ("name3", "123456", "name3 登录成功")
- ]
- @allure.story('分别传值')
- @allure.title('登录测试用例-{title}')
- @pytest.mark.parametrize('username,pwd,title', data)
- def test_login1(username, pwd, title):
- """
- 登录测试用例1
- """
- print(username, pwd)
allure 报告
这种做法的优点
- 可以自定义各式各样的标题
- 单独一个值去维护标题值
- 可读性比较好,容易维护
Pytest 系列(28)- 参数化 parametrize + @allure.title() 动态生成标题的更多相关文章
- Pytest 系列(29)- 详解 allure.dynamic 动态生成功能
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 @allure.title ...
- Pytest系列(21)- allure的特性,@allure.description()、@allure.title()的详细使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 前面介绍了两种allure的 ...
- Pytest系列(20)- allure结合pytest,allure.step()、allure.attach的详细使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 allure除了支持pyte ...
- Pytest系列(22)- allure的特性,@allure.link()、@allure.issue()、@allure.testcase()的详细使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 上一篇文章介绍了两种allu ...
- Pytest系列(23)- allure打标记,@allure.feature()、@allure.story()、@allure.severity()的详细使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 前面几篇文章主要介绍了all ...
- Pytest 系列(27)- allure 命令行参数
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 先看看 allure 命令的帮助文 ...
- Pytest 系列(24)- allure 环境准备
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html allure 和 pytest 相 ...
- pytest文档8-参数化(parametrize)结合allure.title()生成不同标题报告
参数化parametrize 先看一个简单的pytest参数化案例演示test_a.py # test_a.py import pytest import allure def login(usern ...
- C#动态生成html页
Html生成模块:WriteHtml.cs using System.Collections.Generic; using System.IO; using System.Text; namespac ...
随机推荐
- Linux[Manjaro] 小新15笔记本AMD ryzen锐龙4800U,在安装系统后出现的随即死机冻屏问题
Linux[Manjaro] 小新15AMD ryzen锐龙4800U,在安装系统后出现的随即死机冻屏问题解决办法 年初尝试将manjaro安装在我的笔记本上就存在这个问题,也一度将我劝退.系统安装在 ...
- 使用jwt来保护你的接口服务
以前写过一篇关于接口服务规范的文章,原文在此,里面关于安全性问题重点讲述了通过appid,appkey,timestamp,nonce以及sign来获取token,使用token来保障接口服务的安全. ...
- Java面向对象15——内部类
内部类(了解) 成员内部类 package oop.demon01.demon10; public class Outer { private int id = 10; pu ...
- Http Request Smuggling - Note
http请求走私漏洞 访问Burp靶场速度感人..都要哭了(如果没有账户的先创建账户) 基础补充 pipeline http1.1有了Pipeline,就不需要等待Server端的响应了.浏览器默认不 ...
- 全网最硬核Handler面试题深度解析
1.简述Handler的实现原理 Android 应用是通过消息驱动运行的,在 Android 中一切皆消息,包括触摸事件,视图的绘制.显示和刷新等等都是消息.Handler 是消息机制的上层接口,平 ...
- JavaScript学习05(操作DOM)
操作DOM DOM(文档对象模型) 当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model). HTML DOM 模型被结构化为对象树: 通过这个对象模型,Java ...
- Apache网页优化与安全
目录 一.Apache网页优化 1.1.概述 1.2.gzip介绍 1.3.Apache的压缩模块 二.网页压缩实验 2.1.检查是否安装mod_deflate模块 2.2.重新编译安装Apache添 ...
- 尝试通过 JDBC 将 UTF-8 插入 MySQL 时出现“乱码”
这是我的连接设置方式: Connection conn = DriverManager.getConnection(url + dbName + "?useUnicode=true& ...
- 查看linux系统是物理机还是虚拟机
物理机,返回机器型号 [root@laocalhost ~]# dmidecode -s system-product-name S910-X31E 虚拟机 [root@dev01-188 ~]# d ...
- 【微服务技术专题】Netflix动态化配置服务-微服务配置组件变色龙Archaius
前提介绍 如果要设计开发一套微服务基础架构,参数化配置是一个非常重要的点,而Netflix也开源了一个叫变色龙Archaius的配置中心客户端,而且Archaius可以说是比其他客户端具备更多生产级特 ...