什么是allure
- allure是一款轻量级并且非常灵活的开源测试报告框架
- 支持绝大多数测试框架,例如TestNG、Pytest、JUint等
- 简单易用,易于集成
- 在python中使用allure,需要安装allure-pytest
- allure-pytest是Pytest的一个插件,通过它我们可以生成Allure所需要的用于生成测试报告的数据
allure环境配置
- 必须安装jdk并配置环境变量
- JAVA_HOME、path
- 拷贝allure-2.17.3并配置环境变量
- 拷贝allure-2.17.3到某个位置,将此路径(含bin目录)添加到环境变量中
- pip install allure-pytest
- 必须重启pycharm
生成allure测试报告
- 运行测试,生成allure测试报告
import os
pytest.main(['--alluredir=./allure-results', '--clean-alluredir', '被测模块名.py'])
allure生成的是json测试数据,这里把数据存到/allure-results目录下
--clean-alluredir用于清理allure-results中之前的报告数据,否则allure会合并以前的报告数据,并将新数据写入报告中
os.system('allure.bat generate ./allure-results -o ./report --clean')
生成报告到report目录,--clean用于清除report下的文件(必须)
生成allure测试报告
- 案例:编写被测程序
-calc.py
def add(a, b):
return a+b
def sub(a, b):
#预留缺陷
return a+b
def div(a, b):
#预留缺陷
if b!=0:
return a/b
else:
return b/a
编写测试代码文件ceshi_calc_as01.py,测试add函数和sub函数,生成allure测试报告
import pytest
from calc import add, sub
add_cases=[[1,2,3], [2,0,2], [-1,-2,-3], [-2,0,-2]]
@pytest.mark.parametrize('a, b, expect', add_cases)
def test_add(a,b,expect):
actual=add(a, b)
assert actual==expect, f'预期:{a}+({b})={expect},实际:{a}+({b})={actual}'
sub_cases=[[1,2,-1], [2,0,2], [-1,-2,1], [-2,0,-2]]
@pytest.mark.parametrize('a, b, expect', sub_cases)
def test_sub(a,b,expect):
actual=sub(a, b)
assert actual==expect, f'预期:{a}-({b})={expect},实际:{a}-({b})={actual}'
if __name__=='__main__':
import os
pytest.main(['--alluredir=./allure-results', '--clean-alluredir', 'ceshi_calc_as01.py'])
os.system('allure.bat generate ./allure-results -o ./report --clean')
测试报告Overview部分
测试报告Categories部分
测试报告Suites部分
测试报告Graphs部分
测试报告Timeline部分
- 列出了执行时间较长的几个用例
测试报告Behavior部分
测试报告Packages部分编写测试代码文件ceshi_calc_div01.py,测试div函数,生成allure测试报告,不清除之前的测试结果import pytest测试报告Overview部分测试报告Suites部分测试报告Packages部分小结
from calc import div
div_cases=[[1,2,0.5], [2,0,'除数不能为零'], [-1,-2,0.5], [0,2,0]]
@pytest.mark.parametrize('a, b, expect', div_cases)
def test_div(a, b, expect):
actual=div(a, b)
assert actual==expect, f'预期:{a}-({b})={expect},实际:{a}-({b})={actual}'
if __name__=='__main__':
import os
pytest.main(['--alluredir', './allure-results', 'ceshi_calc_div01.py'])
os.system('allure.bat generate ./allure-results -o ./report --clean')
- allure报告可以结合pytest、testng、junit
- 需要先安装jdk并配置环境变量
- 需要安装allure并配置环境变量
- pytest.main(['--alluredir', '测试结果数据目录', '--clean-alluredir', '测试代码模块名'])
- os.system('allure.bat generate 测试结果数据目录 -o 测试报告目录 --clean')
作者:暄总-tester