Python教程:使用Pytest和Allure生成详细测试报告【图文详解】

1、安装allure

下载地址:Releases · allure-framework/allure2 · GitHub

 解压后,运行 allure.bat,会弹出一个黑框一闪而过(闪的太快,没有截到图~~)

2、配置环境变量

allure安装路径: C:\D\soft\allure-2.26.0\bin path中

cmd中输入allure,allure –version,查看环境变量是否配置成功

3、下载allure-pytest插件

下载 pip install allure-pytest
查看 pip show allure-pytest

4、执行自动化用例,生成allure报告所需文件

执行用例,并指定生成allure报告路径,命令如下:

pytest Test_demo02.py -s -q –alluredir=./result

  • alluredir 指定存放allure报告的路径
  • 如图,生成两个文件夹:pytest_cache/result

    result文件夹中三个json文件,对应用例中的三条case。

    5、查看报告方式两种

    方式一:可以通过allure解析json文件,使用命令查看报告
    allure serve ./result (指定result文件夹路径)
    会自动打开浏览器,展示allure报告

    方式二:通过结果生成报告

    d ./result/ -o ./report/ –clean (覆盖路径加–clean)

    打开报告

    allure open -h 127.0.0.1 -p 8883 ./report/

    6、QA-allure serve ./result/报错的解决思路

    pycharm的终端输入:allure serve ./result/

    allure报错:‘allure‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件

    解决思路:

    1. 没有下载allure,只是安装了allure-pytest插件
    2. 安装allure后,检查是否配置allure的环境变量到path
    3. 配置环境变量后,需要重启pycharm,可能是环境变量没有同步过来导致。
    4. 关闭防火墙开关。
    7、allure常用注解

    实例如下

    import allure
    import pytest
    from allure_commons.types import LinkType, Severity
    
    
    @allure.parent_suite('我是parent_suite')
    @allure.suite('我是suite')
    @allure.sub_suite('我是sub_suite')
    @allure.epic('我是epic')
    @allure.feature('我是feature')
    @allure.story('我是story')
    class TestAllureDemo:
    
        @allure.step('我是断言')
        def assert_one(self, a, b):
            assert a == b
    
        @allure.id('我是id')
        @allure.title('我是title')
        @allure.link('https://www.baidu.com/', LinkType.ISSUE, '我是link_ISSUE')
        @allure.label('我是label')
        @allure.issue('https://www.baidu.com/', '我是issue')
        @allure.description('我是description')
        @allure.severity(Severity.BLOCKER)
        @allure.tag('我是tag')
        @allure.testcase('https://www.baidu.com/', 'testcase')
        def test_01(self):
            self.assert_one(1, 1)
    
    
        @allure.id('我是id')
        @allure.title('我是title')
        @allure.link('https://www.baidu.com/', LinkType.LINK, '我是link')
        @allure.label('我是label')
        @allure.issue('https://www.baidu.com/', '我是issue')
        @allure.description('我是description')
        @allure.severity('我是severity')
        @allure.tag('我是tag')
        @allure.testcase('https://www.baidu.com/', '我是testcase')
        def test_02(self):
            allure.dynamic.mro()
            allure.dynamic.title('我是修改后的title')
            allure.dynamic.link('https://www.baidu.com/', LinkType.LINK, '我是修改后的link')
            allure.dynamic.label('我是修改后的label')
            allure.dynamic.issue('https://www.baidu.com/', '我是修改后的issue')
            allure.dynamic.description('我是修改后的description')
            allure.dynamic.severity('我是修改后的severity')
            allure.dynamic.tag('我是修改后的tag')
            allure.dynamic.testcase('https://www.baidu.com/', '我是修改后的testcase')
            assert 1 > 1
    
    

    生成的报告如下

    case1: test_01

     case2: test_02

    作者:大卫软件测试

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python教程:使用Pytest和Allure生成详细测试报告【图文详解】

    发表回复