【Python】使用Pytest集成Allure生成漂亮的图形测试报告
前言
大概两个月前写过一篇《【测试设计】使用jenkins 插件Allure生成漂亮的自动化测试报告》的博客,但是其实Allure首先是一个可以独立运行的测试报告生成框架,然后才有了Jenkins的集成插件。
这一次主要介绍如何把Allure集成到Python的Pytest单元测试框架中。
依赖包安装
Pytest
Pytest是Python的单元测试框架,非常方便和易用。可以规模化以及编写更加复杂的测试用例。安装方法如下:
pip install pytest
Allure Pytest Adaptor
Allure Pytest Adaptor是Pytest的一个插件,通过它我们可以生成Allure所需要的用于生成测试报告的数据。安装方法如下:
pip install pytest-allure-adaptor
改造基于Pytest的测试用例
为了使用Allure生成报告,需要在conftest.py和测试脚本中加入Allure特性。pytest-allure-adaptor官网中详细介绍了pytest-allure-adaptor所具有的功能。我们这次从实际入手,给大家介绍如何将其应用到自己的框架中。
首先,conftest.py中可以通过allure.environment方法将测试环境的信息输出到报告中,比如将测试时用的host和测试用的browser添加到测试报告中:
#!/usr/bin/env python
# coding=utf-8
import pytest
import allure
import yaml
@pytest.fixture(scope="session", autouse=True)
def env(request):
"""
Parse env config info
"""
root_dir = request.config.rootdir
config_path = '{0}/config/env_config.yml'.format(root_dir)
with open(config_path) as f:
env_config = yaml.load(f) # 读取配置文件
allure.environment(host=env_config['host']['domain']) # 测试报告中展示host
allure.environment(browser=env_config['host']['browser']) # 测试报告中展示browser
return env_config
接着,在测试脚本中,添加allure特性,直接看下面的脚本,我通过在脚本中添加注释的方式给大家解释allure特性的用途。比如测试脚本是test_shopping_trolley.py:
#!/usr/bin/env python
# coding=utf-8
import pytest
import allure
@allure.feature('购物车功能') # feature定义功能
class TestShoppingTrolley(object):
@allure.story('加入购物车') # story定义用户场景
def test_add_shopping_trolley(self):
login('刘春明', '密码') # 调用“步骤函数”
with allure.step("浏览商品"): # 将一个测试用例分成几个步骤,将步骤打印到测试报告中,步骤2
allure.attach('商品1', '刘春明') # attach可以打印一些附加信息
allure.attach('商品2', 'liuchunming')
with allure.step("点击商品"): # 将一个测试用例分成几个步骤,将步骤打印到测试报告中,步骤3
pass
with 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)
上面使用了Allure的几个特性:
- @allure.feature # 用于定义被测试的功能,被测产品的需求点
- @allure.story # 用于定义被测功能的用户场景,即子功能点
- with allure.step # 用于将一个测试用例,分成几个步骤在报告中输出
- allure.attach # 用于向测试报告中输入一些附加的信息,通常是一些测试数据信息
- @pytest.allure.step # 用于将一些通用的函数作为测试步骤输出到报告,调用此函数的地方会向报告中输出步骤
生成测试报告
测试脚本中添加了Allure特性之后,在执行测试的时候需要先生成Allure报告所需要的测试结果数据。在py.test执行测试的时候,指定–alluredir选项及测试数据保存的目录即可:
运行测试
py.test test/ --alluredir ./result/
./result/中保存了本次测试的结果数据。另外,还可以执行指定features或者stories执行一部分测试用例,比如执行‘购物车功能’下的‘加入购物车’子功能的测试用例:
py.test test/ --allure_features='购物车功能' --allure_stories='加入购物车'
生成测试报告
接下来我们可以利用上面命令产生的测试数据使用命令行生成Allure测试报告了。命令如下:
allure generate ./result/ -o ./report/ --clean
打开测试报告
通过下面的命令打开测试报告:
allure open -h 127.0.0.1 -p 8083 ./report/
测试报告会使用默认的浏览器打开,下图是github上面的一个图形示例

其他的测试报告可以到我另外一个博客进行查看《【测试设计】使用jenkins 插件Allure生成漂亮的自动化测试报告》详细的测试报告。
相关的GitHub地址:https://github.com/allure-framework
【Python】使用Pytest集成Allure生成漂亮的图形测试报告的更多相关文章
- Python&Selenium&pytest借助allure生成自动化测试报告
一.摘要 本篇博文将介绍Python和Selenium进行自动化测试时,如何借助allure生成自动化测试报告 二.环境配置 首先python环境中安装pytest和pytest_allure_ada ...
- 【测试设计】使用jenkins 插件Allure生成漂亮的自动化测试报告
前言 以前做自动化测试的时候一直用的HTMLTestRunner来生成测试报告,后来也尝试过用Python的PyH模块自己构建测试报告,在后来看到了RobotFramework的测试报告,感觉之前用的 ...
- 基于Python+Requests+Pytest+YAML+Allure实现接口自动化
本项目实现接口自动化的技术选型:Python+Requests+Pytest+YAML+Allure ,主要是针对之前开发的一个接口项目来进行学习,通过 Python+Requests 来发送和处理H ...
- pytest(11)-Allure生成测试报告(一)
Allure是一个开源的测试报告生成框架,提供了测试报告定制化功能,相较于我们之前使用过pytest-html插件生成的html格式的测试报告,通过Allure生成的报告更加规范.清晰.美观. pyt ...
- python自动化之使用allure生成测试报告
Allure测试报告框架帮助你轻松实现"高大上"报告展示.本文通过示例演示如何从0到1集成Allure测试框架.重点展示了如何将Allure集成到已有的自动化测试工程中.以及如何实 ...
- pytest+jenkins+allure 生成测试报告发送邮件
前言第一部分:Pycharm for Gitee1. pycharm安装gitee插件2. gitee关联本地Git快速设置- 如果你知道该怎么操作,直接使用下面的地址简易的命令行入门教程:3. Gi ...
- jenkins持续集成Allure生成报表+邮件推送
本次基于<jenkins 生成HTML报表,邮件推送>的基础上将生成HTML报表修改为Allure生成报表,可以参考官方文档:https://docs.qameta.io/allure/# ...
- Ant中批量调用TestNG的XML文件,并调用TestNgXlst生成漂亮的html测试报告
from:http://blog.csdn.net/bwgang/article/details/7865184 1.在Ant中设置如下: <target name="run_test ...
- pytest集成Allure Report
https://blog.csdn.net/liuchunming033/article/details/79624474#commentBox https://blog.csdn.net/lihua ...
随机推荐
- jQuery --- 利用a标签的download属性下载文件!
最近遇到一个项目,需要有点击下载文件的功能. 由于文件格式是多种的,对于 rar / zip / rtf / doc / xlsx / jpg等. 点击下载有的是直接跳转到后进行下载,但有的是打开进行 ...
- Hibernate之核心文件
一个Hibernate项目核心配置文件主要分为以下三个方面:1.配置文件hibernate.cfg.xml:2.配置文件*.hbm.xml,此文件一般包括映射文件的结构以及各种属性的映射方式:3.Hi ...
- JAVA学习基础知识总结(原创)
(未经博主允许,禁止转载!) 一.基础知识:1.JVM.JRE和JDK的区别: JVM(Java Virtual Machine):java虚拟机,用于保证java的跨平台的特性. java语言是跨平 ...
- 信息收集1:DNSEUM命令
1,背景 今天无意中发现了dnsenum这个工具,在网上搜了下关于dnsenum的介绍和安装使用方法,资料不是很全,但还好这个工具也算简单,网上也都有源码,可以自行下载下来阅读阅读.本人好奇在本机(u ...
- 由于dns服务为启动导致的GI集群启动故障
1.物业由于突然断电导致grid集群重新启动后rac数据库无法正常启动,对集群进行检查,结果如下,发现其中有4个数据库状态为instance shutdown.[root@node1 ~]# su - ...
- python https协议和InsecurePlatformWarning问题
本人最近在学习python,今天想使用python来抓取糗事百科网站上的一些笑话故事的,由于糗事百科的网站url采取的是https协议,所以当我按照常规的方式抓取的时候,发现不行,报错了,找了很多方法 ...
- tomcat设置编码格式utf8
利用request.setCharacterEncoding("UTF-8");来设置Tomcat接收请求的编码格式,只对POST方式提交的数据有效,对GET方式提交的数据无效! ...
- ansible相关
上图为ansible的基本架构,从上图可以了解到其由以下部分组成: 核心:ansible 核心模块(Core Modules):这些都是ansible自带的模块 扩展模块(Custom Modules ...
- windows下安装redis(转)
add by zhj: redis相比memcached相比,性能上并没有绝对的优势.我们用redis的是因为它支持更多的数据类型,而且在分配给redis的内存用满了之后, redis也不会删除没有过 ...
- 13.Github使用
我们一直用GitHub作为免费的远程仓库,如果是个人的开源项目,放到GitHub上是完全没有问题的.其实GitHub还是一个开源协作社区,通过GitHub,既可以让别人参与你的开源项目,也可以参与别人 ...