Pytest框架集成Allure定制测试报告详解(一)
Allure简介
Allure是一款非常轻量级并且非常灵活的开源测试报告生成框架。 它支持绝大多数测试框架, 例如TestNG、Pytest、JUint等。它简单易用,易于集成。下面就Pytest如何与Allure集成做详细介绍。
Pytest框架集成Allure
Pytest是Python的单元测试框架,非常方便和易用。强烈推荐对于用Python进行测试工作的小伙伴使用这个测试框架,相比与Python自带的UnitTest好用太多太多。今天我们主要是介绍如何将测试报告生成工具Allure集成到Pytest中。目前现在已经有allure2了,我们要使用的就是这个allure2
一、Features、Story定制详解
@allure.feature # 用于定义被测试的功能,被测产品的需求点,模块
@allure.story # 用于定义被测功能的用户场景,即子功能点,用例
import pytest,os
import allure
class Test(object):@allure.feature('登录功能')@allure.story('登录成功')def test_login(self):assert 1 == 1def test2(self):assert 1==1
if __name__=="__main__":#生成测试报告jsonpytest.main(["-s", "-q", '--alluredir', 'report/result', 'test01.py'])#将测试报告转为html格式split='allure '+'generate '+'./report/result '+'-o '+'./report/html '+'--clean'os.system('cd C:/Users/wangli/PycharmProjects/Test/test/report')os.system(split)print(split)"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py
..
2 passed in 0.06s
Report successfully generated to .\report\html
allure generate ./report/result -o ./report/html --cleanProcess finished with exit code 0
二、title用例标题和description用例描述定制详解
@allure.title(用例的标题)
@allure.description(用例的描述)
或用例描述也可写成这样
""" 这里是登录成功测试用例 """
import pytest,os
import allure
class Test(object):@allure.feature('登录功能')@allure.story('登录成功')@allure.title('用例的标题')#用例的标题@allure.severity('blocker')@allure.issue('https://www.baidu.com/')#添加权限对应链接@allure.testcase('https://www.baidu.com/')#添加用例对应链接def test_login(self):"""这里是登录成功测试用例:return:"""assert 1 == 1@allure.severity('critical')def test_01(self):assert 1==1@allure.severity('normal')def test_02(self):assert 1==1@allure.severity('minor')def test_03(self):assert 1==1@allure.severity('trivial')def test_04(self):assert 1==1if __name__=="__main__":#生成测试报告jsonpytest.main(["-s", "-q", '--alluredir', 'report/result', 'test01.py'])#将测试报告转为html格式split='allure '+'generate '+'./report/result '+'-o '+'./report/html '+'--clean'os.system('cd C:/Users/wangli/PycharmProjects/Test/test/report')os.system(split)print(split)"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py
.....
5 passed in 0.09s
Report successfully generated to .\report\html
allure generate ./report/result -o ./report/html --cleanProcess finished with exit code 0
三、Severity定制标记用例级别详解
根据测试用例的重要性划分测试用例等级,如果没指定等级,默认为normal级别
Allure中对严重级别的定义:
1、 Blocker级别:中断缺陷(客户端程序无响应,无法执行下一步操作)
@allure.severity('blocker')
2、 Critical级别:临界缺陷( 功能点缺失)
@allure.severity('critical')
3、 Normal级别:普通缺陷(数值计算错误)
@allure.severity('normal')
4、 Minor级别:次要缺陷(界面错误与UI需求不符)
@allure.severity('minor')
5、 Trivial级别:轻微缺陷(必输项无提示,或者提示不规范)
@allure.severity('trivial')
import pytest,os
import allure
class Test(object):@allure.feature('登录功能')@allure.story('登录成功')@allure.severity('blocker')def test_login(self):"""这里是登录成功测试用例:return:"""assert 1 == 1@allure.severity('critical')def test_01(self):assert 1==1@allure.severity('normal')def test_02(self):assert 1==1@allure.severity('minor')def test_03(self):assert 1==1@allure.severity('trivial')def test_04(self):assert 1==1if __name__=="__main__":#生成测试报告jsonpytest.main(["-s", "-q", '--alluredir', 'report/result', 'test01.py'])#将测试报告转为html格式split='allure '+'generate '+'./report/result '+'-o '+'./report/html '+'--clean'os.system('cd C:/Users/wangli/PycharmProjects/Test/test/report')os.system(split)print(split)"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py
.....
5 passed in 0.10s
Report successfully generated to .\report\html
allure generate ./report/result -o ./report/html --cleanProcess finished with exit code 0
四、Step和attach定制详解
allure.step("调用登录"): # 将一个测试用例分成几个步骤,将步骤打印到测试报告中
allure.attach('账号', '18221124104') # attach可以打印一些附加信息
import pytest,os
import allure@allure.feature('购物车功能') # feature定义功能
class Test(object):@allure.story('加入购物车') # story定义用户场景def test_add_shopping_trolley(self):login('橙子', '登录密码') # 调用“步骤函数”with allure.step("浏览商品"): # 将一个测试用例分成几个步骤,将步骤打印到测试报告中,步骤2allure.attach('商品1', 'NIKE球鞋') # attach可以打印一些附加信息allure.attach('商品2', '大众速腾')with allure.step("点击商品"): # 将一个测试用例分成几个步骤,将步骤打印到测试报告中,步骤3passwith allure.step("校验结果"):allure.attach('期望结果', '添加购物车成功')allure.attach('实际结果', '添加购物车失败')assert 'success' == 'failed'@allure.story('修改购物车')def test_edit_shopping_trolley(self):pass@pytest.mark.skipif(reason='本次不执行')@allure.story('删除购物车')def test_delete_shopping_trolley(self):pass@allure.step('账号登录') # 还可以将一个函数作为一个步骤,调用此函数时,报告中输出一个步骤,步骤名字通常是函数名,我把这样的函数叫“步骤函数”
def login(user, pwd):print(user, pwd)
if __name__=="__main__":#生成测试报告jsonpytest.main(["-s", "-q", '--alluredir', 'report/result', 'test01.py'])#将测试报告转为html格式split='allure '+'generate '+'./report/result '+'-o '+'./report/html '+'--clean'os.system('cd C:/Users/wangli/PycharmProjects/Test/test/report')os.system(split)print(split)"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py
橙子 登录密码
F.s
================================== FAILURES ===================================
_______________________ Test.test_add_shopping_trolley ________________________self = <test.test01.Test object at 0x0000024F3425C898>@allure.story('加入购物车') # story定义用户场景def test_add_shopping_trolley(self):login('橙子', '登录密码') # 调用“步骤函数”with allure.step("浏览商品"): # 将一个测试用例分成几个步骤,将步骤打印到测试报告中,步骤2allure.attach('商品1', 'NIKE球鞋') # attach可以打印一些附加信息allure.attach('商品2', '大众速腾')with allure.step("点击商品"): # 将一个测试用例分成几个步骤,将步骤打印到测试报告中,步骤3passwith allure.step("校验结果"):allure.attach('期望结果', '添加购物车成功')allure.attach('实际结果', '添加购物车失败')
> assert 'success' == 'failed'
E AssertionErrortest01.py:51: AssertionError
1 failed, 1 passed, 1 skipped in 0.18s
Report successfully generated to .\report\html
allure generate ./report/result -o ./report/html --cleanProcess finished with exit code 0
五、Issue缺陷链接和TestCase用例链接定制详解
@allure.issue() 缺陷 对应缺陷管理系统里面的链接,在测试报告中可以点击跳转的
@allure.testcase() 测试用例的链接地址 对应功能测试用例系统里面的case链接,在测试报告中可以点击跳转的
import pytest,os
import allure
class Test(object):@allure.feature('登录功能')@allure.story('登录成功')@allure.severity('blocker')@allure.issue('https://www.baidu.com/')#添加缺陷对应链接@allure.testcase('https://www.baidu.com/')#添加用例对应链接def test_login(self):"""这里是登录成功测试用例:return:"""assert 1 == 1@allure.severity('critical')def test_01(self):assert 1==1@allure.severity('normal')def test_02(self):assert 1==1@allure.severity('minor')def test_03(self):assert 1==1@allure.severity('trivial')def test_04(self):assert 1==1if __name__=="__main__":#生成测试报告jsonpytest.main(["-s", "-q", '--alluredir', 'report/result', 'test01.py'])#将测试报告转为html格式split='allure '+'generate '+'./report/result '+'-o '+'./report/html '+'--clean'os.system('cd C:/Users/wangli/PycharmProjects/Test/test/report')os.system(split)print(split)"C:\Program Files\Python35\python.exe" C:/Users/wangli/PycharmProjects/Test/test/test01.py
.....
5 passed in 0.05s
Report successfully generated to .\report\html
allure generate ./report/result -o ./report/html --cleanProcess finished with exit code 0
五、link链接定制详解
@allure.link(‘https://www.baidu.com/’)
六、attachment附件制定
@allure.attachment()
Pytest框架集成Allure定制测试报告详解(一)相关推荐
- python编写命令行框架_python的pytest框架之命令行参数详解(上)
前言 pytest是一款强大的python自动化测试工具,可以胜任各种类型或者级别的软件测试工作.pytest提供了丰富的功能,包括assert重写,第三方插件,以及其他测试工具无法比拟的fixtur ...
- pyhton使用pytest框架生成allure测试报告
一.基础环境 window环境:windows10python环境:python3.7pycharm: pycharm2020java环境:jdk1.8.0_151/jre1.8.0_301(可以不是 ...
- python语言的格式框架_django框架模板语言使用方法详解
本文实例讲述了django框架模板语言使用方法.分享给大家供大家参考,具体如下: 模板功能 作用:生成html界面内容,模版致力于界面如何显示,而不是程序逻辑.模板不仅仅是一个html文件,还包括了页 ...
- DL之YoloV3:Yolo V3算法的简介(论文介绍)、各种DL框架代码复现、架构详解、案例应用等配图集合之详细攻略
DL之YoloV3:Yolo V3算法的简介(论文介绍).各种DL框架代码复现.架构详解.案例应用等配图集合之详细攻略 目录 Yolo V3算法的简介(论文介绍) 0.YoloV3实验结果 1.Yol ...
- allure定制测试报告logo
web自动化-allure定制测试报告logo 找到allure安装目录 更换logo 添加插件 找到allure安装目录 忘记了allure安装目录可以在环境变量里面找 更换logo C:\pyto ...
- Django框架学习(一)Django框架安装和项目创建详解
Django框架学习(一)Django框架安装和项目创建详解 文章目录 Django框架学习(一)Django框架安装和项目创建详解 一.简介 1.1介绍 1.2 URL 1.3.框架原理 二.安装 ...
- 【机器学习】集成学习及算法详解
集成学习及算法详解 前言 一.随机森林算法原理 二.随机森林的优势与特征重要性指标 1.随机森林的优势 2.特征重要性指标 三.提升算法概述 四.堆叠模型简述 五.硬投票和软投票 1.概念介绍 2.硬 ...
- Pytest参数选项自由执行测试用例详解(二)
运行pytest可以指定目录和文件,如果不指定,pytest会搜索当前目录及其子目录中以test_开头或以_test结尾得测试函数.我们把pytest搜索测试文件和测试用例的过程称为测试搜索(test ...
- Hadoop框架:DataNode工作机制详解
本文源码:GitHub·点这里 || GitEE·点这里 一.工作机制 1.基础描述 DataNode上数据块以文件形式存储在磁盘上,包括两个文件,一个是数据本身,一个是数据块元数据包括长度.校验.时 ...
最新文章
- vimrepress
- 批量关闭电脑有害端口方法
- 做了中台就不会死吗?每年至少40%开发资源是被浪费的!
- 计算机专业本科毕业转行会计,大学里就业最难的5个专业,毕业后难找工作,很多同学都转行了!...
- Ankhsvn 改名出错
- linux 安装mysql 5.7.16
- 导致301状态码的可能的原因
- 浅谈UDP(数据包长度,收包能力,丢包及进程结构选择)
- 数字水印技术的基本概念和现状
- 古诗词取名小工具1.0
- TARA-汽车安全概念
- 解决一下 WebView2 不能用 socket5代理的问题。
- 激光雷达障碍物检测与追踪实战——基于欧几里德聚类的激光雷达障碍物检测
- 微软 Win10 更新再出 bug
- rsync与scp对比
- 蓝牙协议栈认证:什么是蓝牙Core Layer的BQB认证要求
- Mac:TexStudio 首行缩进
- [转]金属加工工艺基础知识
- linux编程之emacs
- Proj.NET-地球椭球体、大地基准面及地图投影
热门文章
- html怎么保存曲奇,自制曲奇饼能保存多久 这些存放方法你懂吗
- vs 2015 oracle,VS2015连接oracle11g出现异常
- 北京大学计算机复试分数线,2014北京大学考研复试分数线公布
- Redis 缓存实战——缓存、数据库一致性问题分析与解决方案
- Java面试宝典————基础篇
- android 获取monkey日志_安卓app测试之Monkey日志分析
- php进程数是指什么,25.查看php 某个服务的进程数
- tina中信号带宽_关于通频带,3dB带宽,三阶截点和1dB压缩点,截止频率,频率范围,带宽,特征频率(中心频率),截止频率和增益(db)...
- win10 联想键盘快捷键关闭_这些Win10键盘快捷键你必须掌握,系统高手必备技能...
- HTML+CSS+JS实现 ❤️高光立体游戏卡片悬停ui特效❤️