简介
Allire是一款轻量级的开源自动化测试报告生成框架,JAVA语言开发的,支持大部分测试框架,如pytest,unittest等,生成的测试报告是最漂亮的。,而且还可以配合pytest 和jenkin实现CI集成
官方文档:https://docs.qameta.io/allure/#_pytest
安装
安装JAVA环境
Allure的运行需要以来java的环境,小编在实测的过程,发现很多的JDK版本是无法运行起来Allure的, 但是jdk1.13是可以的,也建议读者使用该版本
在ubuntu环境下安装jdk,是非常简单的,如下
sudo apt install openjdk-13-jre-headless
在windows下载,去官网下载安装即可
连接:https://www.java.com/en/download/
安装Allure命令行工具
在ubuntu下安装
sudo apt-get install allure
在实际开发中更常用的是将allure源代码下载到本地
安装pytest-allure集模块
pip install allure-pytest
基本使用
生成allure的测试报告,结果以json格式文件保存在指定的目录
pytest.ini文件
[pytest] # 指定运行参数 addopts = -s -v -p no:warnings --reruns 3 --reruns-delay 2 -n 4 --alluredir=./results # 搜索测试文件的目录路径 testpaths = ./ # 搜索测试文件名格式 python_files = pytest_*.py # 搜索测试类格式 python_classes = Test* # 搜索测试方法名格式 python_functions = test_*
运行测试用例,即可生成指定的json文件
生成测试报告
allure serve ./results
会以服务端的方式打开测试报告
报告结果展示
生成html格式文档的测试报告
HTML格式文档的生成要依赖上面生成的json文件,所以必须先生成json文件,才可以生成html格式报告
allure generate ./results -o ./reports --clean
将index.html在浏览器中打开即可
常用方法
方法 | 描述 |
@allure.testcase(url,name=None) | 设置测试用例的站点访问地址 |
@allure.issue(url,name=None) | 设置测试用例的站点缺陷管理地址 |
@allure.feature(feature) | 设置测试用例的模块名称 |
@allure.severity(severity_level) |
设置测试用例的优先级,有五个等级 CRITICAL: 严重缺陷 NORMAL: 普通缺陷(默认值) MINOR: 较小缺陷 TRIVIAL:不重要缺陷 BLOCKER:阻塞缺陷 |
@allure.title(title) | 设置测试用例的标题名称 |
@allure.description(description) | 设置测试用例的描述信息,是纯文本 |
@allure.description_html(description_html) | 设置测试用例的描述信息,是html文本 |
@allure.link(url,link_type,name=None) | 设置测试用例的缺陷访问地址 |
allure.step(title) | 设置测试用例的执行过程的步骤信息 |
allure.attach(body, name=None, attachmet_type=None, extension=None) |
设置测试用例的文本附件信息,常见的文本附件类型支持 TEXT, SVG,HTML,JSON,YAML,CSV等 |
allure.attach.file(filepath, name=None, attachment_type=None, extension=None) |
设置测试用例的文件附件信息,常见的文件附件类型包括 PNG , GIF,IPG,PDF |
代码实现
import os
import random
import pytest
import shutil
import allure
from allure_commons.types import LinkType
def add(x, y):
return x + y
@allure.testcase("http://www.luffycity.com", "测试地址站点的首页地址")
@allure.issue("http://www.luffycity.com", "软件缺陷的管理站点的首页地址")
class TestAdd(object):
@allure.feature("测试用例模块的描述: 购物车模块,用户模块")
@allure.story("测试用例的分类描述")
@allure.title("测试用例test_01的标题描述")
@allure.description("测试用例test_01的详细描述")
@allure.severity(allure.severity_level.MINOR) # 较小缺陷等级的用例,如果不设置这个,默认是NORMAL普通缺陷等级的用例
def test_01(self):
res = add(10, 20)
assert res == 30
@allure.feature("测试用例模块的描述: 购物车模块,用户模块")
@allure.story("测试用例的分类描述")
@allure.title("测试用例test_02的标题描述")
# @allure.description("测试用例test_02的详细描述") # 纯文本描述
@allure.description_html("<b style='color: red;'>测试用例test_02的详细描述</b>") # HTML文本描述
@allure.severity(allure.severity_level.BLOCKER) # 阻塞缺陷等级的用例
@allure.link("http://test.luffycity.com/test_02", link_type=LinkType.LINK, name="测试用例:02")
# 只设置当前测试用例方法失败重试
@pytest.mark.flaky(reruns=3, reruns_delay=2)
def test_02(self):
# 注意是使用with上下文管理器语句
with allure.step("步骤1:内容描述"):
result = 1+1
with allure.step("步骤2:内容描述"):
result +=1
print(f"测试结果是:{result}")
assert result == 3
@allure.feature("测试用例模块的描述: 购物车模块,用户模块")
@allure.story("测试用例的分类2描述")
@allure.title("测试用例test_03的标题描述")
@allure.description("测试用例test_03的详细描述")
@allure.severity(allure.severity_level.CRITICAL) # 致命缺陷等级的用例
def test_03(self):
# 图片附件
allure.attach.file("/home/zk4956z3/PycharmProjects/autoTest/demo/images/demo.png", 'demo.png', allure.attachment_type.PNG)
# 文本附件
allure.attach("""<h1>Test with some complicated html description</h1>
<table style="width:100%">
<tr>
<th>Firstname</th>
<th>Lastname</th>
<th>Age</th>
</tr>
<tr align="center">
<td>William</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr align="center">
<td>Vasya</td>
<td>Jackson</td>
<td>94</td>
</tr>
</table>""", "Test with some complicated html attachment", allure.attachment_type.HTML)
ret = random.randint(1, 3)
assert ret % 2 == 0
# __name__ 是一个魔术变量,在当前文本被python解释器作为主程序运行是,值固定就是 "__main__",
# 如果当前文件作为模块被其他文件导包使用,则__name__的值,则为当前文件名或者其他的自定义名称,总之不是 "__main__"了。
if __name__ == '__main__':
try:
# 删除之前的测试结果与测试文件目录内容
shutil.rmtree("./reports")
shutil.rmtree("./results")
except Exception as e :
print(e)
pytest.main(["-sv", "/home/zk4956z3/PycharmProjects/autoTest/demo/main.py", "--alluredir", "./results"])
# 生成报告html文件
os.system('/home/zk4956z3/PycharmProjects/autoTest/allure/bin/allure generate ./results -o ./reports --clean')
# # 基于http协议打开HTML测试报告
os.system('/home/zk4956z3/PycharmProjects/autoTest/allure/bin/allure open ./reports')
标签:__,allure,Allure,html,测试用例,pytest,test From: https://www.cnblogs.com/victor1234/p/17727876.html