- allure介绍
- allure安装
- pytest-allure插件
- Allure 报告的生成
- allure特性分析
- 按feature,story运行
- allure+pytest+selenium实战演示
allure介绍
- allure是一个轻量级,灵活的,支持多语言的测试报告工具;
- 多平台的,奢侈的report框架;
- 可以为dev/qa提供详尽的测试报告,测试步骤,log;
- 提供high level统计报告
- java语言开发的,支持pytest,javaScript,PHP,ruby等
- 可以集成jenkins
实例地址:https://demo.qameta.io/al lure/#
allure安装
windows通用安装方法
http://github.com/allure-framework/allure2/releases 下载allue2.7.zip包
解压->进入bin目录->运行allure.bat,
把bin目录加入PATH环境变量
官方:http://allure.qatools.ru/
文档:https://docs.qameta.io/allure/#
安装allure-pytest库
pip install allure-pytest
下载压缩包
https://github.com/allure-framework/allure2/releases/tag/2.15.0
下载的压缩包,解压之后放到非中文目录下,然后将文件夹中的bin目录配置到环境变量path中
查看allure版本
allure --version
执行case收集pytest执行的数据
import pytest
@pytest.mark.parametrize("test_input,expected",[("3+5",8),("2+5",7),("7+5",30)])
def test_eval(test_input,expected):
assert eval(test_input) == expected
@pytest.mark.xfail(reason="这条用例执行会失败")
def test_case01():
a=0
assert a != "0"
raise NameError()
@pytest.mark.skip(reason="这条用例不执行")
def test_case02():
a=0
assert a != "0"
def test_case03():
a=0
assert a == 0
if __name__ == '__main__':
pytest.main(["-n 3","-s","-v","--alluredir=./result/data"])
生成的json数据
打开测试报告命令
allure serve ./result/data
默认的浏览器打开测试报告
allure命令
查看帮助文档
allure -h
1,测试完成查看实际报告,打开默认浏览器查看测试报告
# 执行 pytest,指定 allure 结果目录
pytest -sq --alluredir=./allure
# 打开 allure 报告
allure serve ./allure
2,从结果生成测试报告,启动服务,生成报告,打开报告
# 执行 pytest,指定 allure 结果目录
pytest -sq --alluredir=./allure
# 生成 allure 的 html 报告
allure generate -c -o ./allure-report ./allure #(覆盖路径加--clean)
# 打开 allure 报告
allure open ./allure-report
# 指定ip地址及端口,打开 allure 报告
allure open -h 127.0.0.1 -p 8883 ./allure-report
allure 的美化定制
1,@feature 模块名称
import pytest
import allure
@allure.feature("参数化") # 标注用例
class Testdemo():
@pytest.mark.parametrize("test_input,expected",[("3+5",8),("2+5",7),("7+5",30)])
def test_eval(self,test_input,expected):
assert eval(test_input) == expected
@pytest.mark.xfail(reason="这条用例执行会失败")
def test_case01(self):
a=0
assert a != "0"
raise NameError(self)
@pytest.mark.skip(reason="这条用例不执行")
def test_case02(self):
a=0
assert a != "0"
def test_case03(self):
a=0
assert a == 0
if __name__ == '__main__':
pytest.main(["-s","-v","--alluredir=./result/data"])
2,@story 用户故事
import pytest
import allure
@allure.feature("参数化") # 标注用例
class Testdemo():
@pytest.mark.parametrize("test_input,expected",[("3+5",8),("2+5",7),("7+5",30)])
def test_eval(self,test_input,expected):
assert eval(test_input) == expected
@allure.story("失败") # 标注失败用例
@pytest.mark.xfail(reason="这条用例执行会失败")
def test_case01(self):
a=0
assert a != "0"
raise NameError(self)
@pytest.mark.skip(reason="这条用例不执行")
def test_case02(self):
a=0
assert a != "0"
def test_case03(self):
a=0
assert a == 0
if __name__ == '__main__':
pytest.main(["-s","-v","--alluredir=./result/data"])