【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
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律