学习pytest的第十二天-----使用allure2生成测试报告

引入

allure是一个生成测试报告的框架,相比pytest自带的生成html报告,allure可是逼格高了很多。目前现在已经有allure2了,我们要使用的就是这个allure2。

安装

因为allure2需要在java的环境下,并且要求必须是jdk1.8级以上,所以要首先保证这一点。

接着,要安装allure-pytest,他用来在pytest执行测试结束后生成allure所需要的配置信息。安装使用pip命令即可:

pip install allure-pytest

我看到许多教程是让安装 pytest-allure-adaptor 的,我刚开始也是安装的他,但是使用的时候出了错。查了解决方法就是卸掉pytest-allure-adaptor,安装allure-pytest。后来了解到官方已经放弃维护pytest-allure-adaptor~

最后,下载allure2:https://github.com/allure-framework/allure2/releases,我们下载的是allure-2.8.0版本;下载后解压,放在某个位置(建议放在C:\python35\Lib\site-packages下);配置环境变量:环境变量path中加上解压好的文件夹下的bin目录下的allure.bat文件的路径(这里是:C:\python35\Lib\site-packages\allure-2.8.0\bin)

使用

使用起来比较简单,我们看一下小荔枝:
第一步:在pytest运行函数或命令行中添加参数:–alluredir ,后面加上一个路径,用来存放生成的allure的配置信息

看一个小荔枝:我们在运行函数中传入了alluredir参数,我们把生成的配置信息放在了同目录下的report下的result文件夹中

#test_Pytest.py文件
#coding=utf-8

import pytest
import os

class Test_Pytest():

        def test_one(self):
                print("test_one方法执行" )
                assert 1==1

        def test_two(self):
                print("test_two方法执行" )
                assert "s" in "love"

        def test_three(self):
                print("test_three方法执行" )
                assert 3-2==1

if __name__=="__main__":
    pytest.main(['-s','-q','--alluredir','report/result','test_Pytest.py'])

运行完我们可以看到该路径下多了好多配置信息。但是我看教程说是xml文件,不知道为什么我现在是txt和json,如果有知道的大佬,求告知~
学习pytest的第十二天-----使用allure2生成测试报告_第1张图片
第二步:用命令行或os模块运行allure命令,来生成html格式的报告(根据刚刚生成的配置信息)
命令如下:(因为我们已经将allure.bat放在环境变量中,所以在哪里打开cmd窗口都可以找到allure/allure.bat)

allure generate 配置信息的路径 -o 生成报告的路径

我们这里是:

allure generate F:/pycharm_workspace/FirstApplication/testPytest/report/result  -o F:/pycharm_workspace/FirstApplication/testPytest/report/html

运行结果如图:
学习pytest的第十二天-----使用allure2生成测试报告_第2张图片
此时我们到该路径下,发现有一个index.html文件,打开就可以看到我们的报告了,如下图:
学习pytest的第十二天-----使用allure2生成测试报告_第3张图片
我们也可以在代码中实现生成html报告的操作,使用os模块:

下面代码中,我们先是运行了测试,生成了allure的相关配置信息,然后通过os模块执行了生成报告的命令。

需要说明的是在这里我们没有直接使用 allure/allure.bat ,而是把他的全路径加上了,虽然我们已经将他配置了环境变量,但是如果你不加全路径,你很有可能会收到 "allure不是内部命令也不是外部命令…"这个报错哦~

if __name__=="__main__":
    pytest.main(['-s','-q','--alluredir','report/result','test_Pytest.py'])
    os.system("C:/python35/Lib/site-packages/allure-2.8.0/bin/allure.bat "
              "generate "
              "F:/pycharm_workspace/FirstApplication/testPytest/report/result "
              "-o "
              "F:/pycharm_workspace/FirstApplication/testPytest/report/html")

你可能感兴趣的:(单元测试)