python pytest allure测试报告

  • 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"])

 

猜你喜欢

转载自blog.csdn.net/qq_26086231/article/details/120597528