pytest+allure 生成测试报告

一、使用pip包管理工具进行安装第三方库
pip install pytest 和 pip install pytest-html
二、命名规则
Pytest单元测试中的类名和方法名必须是以test开头,执行中只能找到test开头的类和方法
例:

    class TestPy01:
    def testPy001(self):
        print("第一个pytest")
        assert 1==1

三、Pytest生成自带的html测试报告
3.1 方式一
格式:
pytest.main("模块.py")【运行指定模块下,运行所有test开头的类和测试用例】
pytest.main(["--html=./report.html","模块.py"])
代码:
pytest.main(["--html=../report1.html", "test_01.py"])
3.2 方式二
格式:
运行指定模块指定类指定用例,冒号分割,并生成测试报告
pytest.main(['--html=./report.html','模块.py::类::test_a_001'])
代码:
pytest.main(["--html=../report1.html", "test_01.py::TestPy01::testPy001"])
扩展:
pytst.main(['-x','--html=./report.html','t12est000.py'])

-x:出现一条测试用例失败就退出测试
-v:丰富信息模式, 输出更详细的用例执行信息
-s:显示print内容
-q:简化结果信息,不会显示每个用例的文件名
#  使用@pytest.mark.skip()跳过该用例
    @pytest.mark.skip()
    def test001(self):
        assert 2==2

四、Pytest的运行结果显示

. 点号,表示用例通过
F 表示失败 Failure
E 表示用例中存在异常 Error

五、文件读取
先创建文件,然后读取
5.1 读取csv文件

import csv   #导入csv模块
class ReadCsv():
    def read_csv(self):
        item =[]    #定义一个空列表
        c = csv.reader(open("../commonDemo/test1.csv","r"))    #得到csv文件对象
        for csv_i in c:
            item.append(csv_i)      #将获取的数据添加到列表中
        return item
            
r = ReadCsv()
print(r.read_csv())

5.2 读取xml文件

from xml.dom import minidom
class Readxml():
    def read_xml(self,filename,onename,twoname):
        root =minidom.parse(filename)
        firstnode =root.getElementsByTagName(onename)[0]
        secondnode=firstnode.getElementsByTagName(twoname)[0].firstChild.data
        return secondnode

六、Allure
Allure是一款轻量级并且非常灵活的开源测试报告框架。 它支持绝大多数测试框架, 例如TestNG、Pytest、JUint等。它简单易用,易于集成。
Allure下载

  • 首先配置allure的环境变量


    image.png
  • 验证allure是否配置成功


    image.png
  • 其次要安装allure
    pip install allure-pytest
    allure-pytest是Pytest的一个插件,通过它我们可以生成Allure所需要的用于生成测试报告的数据
    6.1. Allure常用的几个特性
@allure.feature # 用于描述被测试产品需求
@allure.story # 用于描述feature的用户场景,即测试需求
with allure.step(): # 用于描述测试步骤,将会输出到报告中
allure.attach # 用于向测试报告中输入一些附加的信息,通常是一些测试数据,截图等
  • 例1:
import pytest,allure,os
class TestClass005():
    @allure.feature("用户登录功能")#用于定义被测试的功能,被测产品的需求点
    @allure.story("登录成功")     #用于定义被测功能的用户场景,即子功能点
    def test_success(self):
        assert 1==1
    @allure.feature("用户登录功能")#用于定义被测试的功能,被测产品的需求点
    @allure.story("登录失败")     #用于定义被测功能的用户场景,即子功能点
    def test_fail(self):
        assert 1==2
if __name__ == '__main__':
    pytest.main(['--alluredir', 'report/result', 'test_06.py'])  #生成json类型的测试报告
    split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean'  #将测试报告转为html格式
    os.system(split)  # system函数可以将字符串转化成命令在服务器上运行
  • 例2
import pytest,os,allure
class TestShop():
    @allure.feature("购物车")
    @allure.story("产品展示")
    def testshow(self):
        with allure.step("查看哈吉利系列车信息"):
            allure.attach("博越","吉利")
        with allure.step("查看哈弗系列车信息"):
            allure.attach("H7","哈弗")
if __name__ == '__main__':
    pytest.main(['--alluredir', 'report/result', 'test_07.py'])
    split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean'
    os.system(split)

Pytest和allure效果展示


image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容