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()

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytest+Allure+Jenkins接口自动化项目实战(一)

经过一周多时间&#xff0c;基于pythonpytestexcelallure框架的接口自动化测试初版已基本实现&#xff0c;包括基本配置读取、用例读取、用例执行、sql读取执行、前置数据准备、后置数据清理以及测试报告生成等&#xff0c;环境独立运行、项目独立运行、用例独立运行、jenkins集…

Jmeter BeanShell取样器操作变量(一)

vars: 引用Jmeter线程的局部变量&#xff0c;将 局部变量 改为 全局变量 亦可达到引用全局变量的效果&#xff0c; 连通Jmeter 和 beanshell string user vars.get("user")//获取变量&#xff0c;保存变量 vars.put&#xff08;String key, String value&#xf…

Jmeter Beanshell采样器调用JAVA方法(二)

BeanShell Sampler调用添加的java方法 1、BeanShell Sampler里添加java方法 public static String test() {vars.put("jmeter1","111");vars.put("jmeter2","222");vars.put("jmeter3","333");vars.put("j…

Jmeter BeanShell采样器提取接口响应并传递(三)

1、将fastjson-1.2.68.jar放置C:\jmeter\apache-jmeter-5.0\lib路径下 2、CSV 数据文件设置多个手机号 3、添加登录接口&#xff0c;${mobile}调用2种的mobile值 4、登录接口响应数据 5、BeanShell 取样器提取登录接口响应数据 //导入json包 import com.alibaba.fastjson.JSON…

Jmeter BeanShell采样器提取接口响应写入csv文件(四)

1、调用登录接口获取response数据 {"code":0,"msg":"成功","data":{"token":"bearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9tZW1iZXItYXBpLnN0MS50ZXN0LmxhbnhpbmthLmNvbVwvMi4wXC91c2Vyc1wvb…

Jmeter JDBC Request执行多条SQL语句

之前写过Jmeter操作mysql的文章https://blog.csdn.net/qq_36502272/article/details/88891873今天我们再看下如何操作多条sql语句 1、添加JDBC Connection Configuration并配置 Database URL为MySQL的连接串&#xff0c;如果要执行多条SQL语句&#xff0c;后面还要添加“?al…

Pytest之pytest-assume同用例多断言,断言1失败会执行后续代码及断言2

一般我们做自动化测试时&#xff0c;一个用例会写多个断言&#xff0c;当第一个断言失败后&#xff0c;后面的代码就不会执行了&#xff0c;于是我们引进了pytest-assume插件可以解决断言失败后继续断言的问题。一、安装依赖包pip install pytest-assume二、使用assert进行断言…

无法打开包括文件: “corecrt.h”: No such file or directory

刚开始安装qt&#xff0c;测试是否安装成功就出现此问题&#xff0c;让人很头大 参考&#xff1a;https://blog.csdn.net/x356982611/article/details/51140807的播客 编译时候使用的是最新的sdk版本10.0.10586.0版本但是它里面没有ucrt目录&#xff0c;问题找到了。 看了下v…

Pytest参数选项在脚本中和命令行用法详解

运行pytest可以指定目录和文件&#xff0c;如果不指定&#xff0c;pytest会搜索当前目录及其子目录中以test_开头或以_test结尾得测试函数。我们把pytest搜索测试文件和测试用例的过程称为测试搜索&#xff08;test discovery&#xff09;。只要遵循pytest的命名规则&#xff0…

Win7下OpenCV3.2.0+VS2015配置

参考自&#xff1a;https://blog.csdn.net/qq_22812319/article/details/78335880 一、预备知识 1、下载opencv时&#xff0c;opencv与vs版本是有固定关系的。 2、vs一般使用release版本。 3、首先在下载的openCV解压目录opencv/build/x64/下查看文件夹名&#xff0c;如下图…

win7 vs2015配置qt5.11

1、下载vs&#xff0c;和qt。 qt百度网盘下载链接&#xff1a;https://pan.baidu.com/s/12bUt31_mXGvgc3tdJRkkkw 提取码&#xff1a;2swk 下载完成之后&#xff0c;直接进行安装&#xff0c;下一步。 安装的时候要根据自己的VS版本选择相应的msvc&#xff08;VC运行库&…

原创 | 开源AI测试专题、Jmeter测试专题

开源 AI 测试专题震惊&#xff01;AI成功落地自动化测试AI 软件测试工具 Mabl 快速概览AI测试工具 Mabl - 测试用例自动自愈Sauce Labs 的持续 UI 自动化测试云疫情中诞生的 AI 测试工具&#xff1a;ai-webdriverAI 测试又多新花招&#xff1f;ai-webdriver-1.0.1 独家更新一眼…

Python深层解析json数据之JsonPath

我们在做接口自动化时&#xff0c;一般接口响应的都是json数据体&#xff0c;对响应数据进行提取使用或断言&#xff0c;当数据量很大或层级很深时&#xff0c;就会变得很麻烦&#xff0c;于是就可以用到jsonpath模块&#xff0c;解决json路径深取值难的问题。一、 jsonpath介绍…

VS2015+qt5.11入门(实现计算机的加法和登录操作)

1、在vs中新建qt项目 2、打开Form Files中的.ui文件。即打开qt creator界面 3、在界面中添加两个label&#xff0c;两个LineEdit&#xff0c;一个计算按钮。点击保存 控件右击-->改变对象名称可以直接改变控件名。&#xff08;会映射显示在vs中的ui_projectname.h中&…

抓包工具mitmproxy环境配置使用(一)

一、mitmproxy介绍mitmproxy是一款开源的抓包工具&#xff0c;支持SSL的HTTP代理&#xff0c;它可以用于调试HTTP通信&#xff0c;发起中间人攻击等&#xff0c;还可以配合自定义python脚本使用&#xff0c;不同于 fiddler 或 wireshark 等抓包工具&#xff0c;mitmproxy 不仅可…

Pytest fixture参数化params

unittest使用ddt来实现测试用例参数化、或parameterized实现测试用例参数化&#xff0c;pytest测试用例里面对应的参数可以用 parametrize 实现参数化&#xff0c;今天我们来了解下fixture参数化paramsfixture的参数可以解决大量重复代码工作,比如数据库的连接、查询、关闭等.同…

python3中选择文件对话框的格式打开和保存图片

tkinter.filedialog.asksaveasfilename() # 选择以什么文件名保存&#xff0c;返回文件名 tkinter.filedialog.askopenfilename() # 选择打开什么文件&#xff0c;返回文件名有时候我们想要以选择文件对话框的格式打开一张图片或者保存图片&#xff0c;我在尝试之后把我的…

Python测试开发django1.简介

Django是一种基于Python开发的开源的高级Web应用框架&#xff0c;使用Django&#xff0c;使你能够以最小的代价构建和维护高质量的Web应用。Django 本身基于 MVC 模型&#xff0c;即 Model&#xff08;模型&#xff09; View&#xff08;视图&#xff09; Controller&#xff0…

Python测试开发django2.环境部署项目创建

Django是由Python编写的Web框架&#xff0c;依赖Python环境&#xff0c;所以需要提前安装好Python环境。建议安装最新版本的Python3&#xff0c;Python 下载地址&#xff1a;https://www.python.org/downloads/1、Django官网https://www.djangoproject.com/2、Django版本Django…

excel如何输入毫秒级时间

1、选择单元格或单元格区域&#xff1b; 2、右击-设置单元格格式&#xff08;或按ctrl1&#xff09;&#xff1b; 3、数字选项卡-自定义-h:mm:ss.000 4、单元格就可以输入精度为千分之一秒的时间&#xff0c;如&#xff1a;20:15:21.451 参考自https://zhidao.baidu.com/questi…