自动化测试基础——allure下载安装及配置及pytest + allure-pytest插件生成allure企业级测试报告及企业级定制

文章目录

前言

allure 是一个java测试报告框架。所以要基于JDK环境

一、allure下载

二、allure安装

  • 将下载好的安装包解压到需要存放的路径下(我这边存放在了D盘的根目录下)

三、allure目录介绍

  • bin:命令文件

  • config:配置文件

  • lib:存放jar包

  • plugins:插件

四、allure环境变量配置

  1. 此电脑 → 属性

  2. 高级系统设置

  3. 环境变量

  4. 双击系统变量下的Pash

  5. 新建

  6. 填写 allure 安装的路径 → 确定(D:\allure-2.21.0\bin)

  7. 确定

  8. 确定

  9. Windows系统及PyCharm中验证

    python 复制代码
    allure --version

注意:allure环境变量配置完成以后,Windows窗口验证没问题,pycharm验证有问题,则重启pycharm重新验证即可

五、pytest + allure-pytest插件生成allure企业级测试报告

  1. 安装 pytest allure-pytest 插件

    python 复制代码
    pip install pytest 
    pip install allure-pytest
  2. 配置 pytest.ini 全局配置文件

    python 复制代码
    # --alluredir=./temps:设置allure生成临时的json格式的报告存放的路径
    # --clean-alluredir:清空上一次运行的记录
    
    addopts = -vs --alluredir=./temps --clean-alluredir
  3. pytest测试框架的主函数入口配置

    参数 作用
    generte 生成报告
    temps allure生成临时的json格式的报告存放的路径
    -o 生成allure报告的目录
    report 生成allure报告存放的目录
    -c,--clean 清空
    python 复制代码
    import os
    
    import pytest
    
    # 运行pytest测试框架的主函数
    if __name__ == '__main__':
        pytest.main()
        # 调用allure生成报告
        os.system("allure generate ./temps -o ./report --clean")

注意:需要通过pytest主函数执行才会生成allure的html测试报告

  1. 查看allure生成的html测试报告


  2. 修改allure报告的语言

六、allure企业级报告的log定制

  1. 前往allure安装目录下的plugins存放插件的目录下复制定制log的插件名称

  2. 将复制的插件名称粘贴到allure安装目录下的config目录下的allure.yml文件中

    config目录下的allure.yml文件中配置自定义的logo插件

    python 复制代码
    - custom-logo-plugin
  3. 重新启动pytest生成allure报告,查看是否启用自定义log插件

  4. 将准备好的log图片放到allure安装目录下的plugins\custom-logo-plugin\static定制log的插件路径下

  5. 修改allure安装目录下的plugins\custom-logo-plugin\static定制log的插件路径下的styles.css文件

    通过修改这两个参数来调整log图片的大小和位置:margin-left: 10px;height: 90px;

    html 复制代码
    .side-nav__brand {
      background: url('log.jpg') no-repeat left center !important;
      margin-left: 10px;
      height: 90px;
      background-size: contain !important;
    }
    
    .side-nav__brand-text {
      display: none;
    }


  6. 重新启动pytest生成allure报告,查看是否定制log成功

七、allure企业级报告功能内容定制

1.功能左边层级定制

  • (1)项目名称(史诗):@allure.epic()

  • (2)模块名称(特性):@allure.feature()

  • (3)接口名称(分组):@allure.story()

  • (4)用例标题:有两种方式(两种效果是一样的,方式二更加灵活)

    • 方式一:@allure.title()
    • 方式二:allure.dynamic.title()

    方法一

    python 复制代码
    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.title("用例名称-验证成功登陆")
        def test_login(self):
            print("登陆")
    
        @allure.story("用户注册接口")
        @allure.title("用例名称-验证成功注册")
        def test_register(self):
            print("注册")
    
        @allure.story("添加用户")
        @allure.title("用例名称-验证成功添加用户")
        def test_add_user(self):
            print("添加用户")


    方法二

    python 复制代码
    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            print("登陆")
    
        @allure.story("用户注册接口")
        def test_register(self):
            allure.dynamic.title("用例名称-验证成功注册")
            print("注册")
    
        @allure.story("添加用户")
        def test_add_user(self):
            allure.dynamic.title("用例名称-验证成功添加用户")
            print("添加用户")

注意:每次修改内容后要查看预期结果需要重新执行allure生成报告

2.功能右边优先级定制

优先级默认都是:normal

  • 测试用例严重级别:

    • BLOCKER:致命的(@allure.severity(allure.severity_level.BLOCKER)
    • CRITICAL:严重的(@allure.severity(allure.severity_level.CRITICAL)
    • NORMAL:正常的(@allure.severity(allure.severity_level.NORMAL)
    • MINOR:轻微的(@allure.severity(allure.severity_level.MINOR)
    • TRIVIAL:不重要的(@allure.severity(allure.severity_level.TRIVIAL)
    python 复制代码
    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            print("登陆")
    
        @allure.story("用户注册接口")
        @allure.severity(allure.severity_level.CRITICAL)
        def test_register(self):
            allure.dynamic.title("用例名称-验证成功注册")
            print("注册")
    
        @allure.story("添加用户")
        @allure.severity(allure.severity_level.NORMAL)
        def test_add_user(self):
            allure.dynamic.title("用例名称-验证成功添加用户")
            print("添加用户")
    
        @allure.story("删除用户")
        @allure.severity(allure.severity_level.MINOR)
        def test_delete_user(self):
            allure.dynamic.title("用例名称-验证成功删除用户")
            print("删除用户")
    
        @allure.story("修改用户")
        @allure.severity(allure.severity_level.TRIVIAL)
        def test_update_user(self):
            allure.dynamic.title("用例名称-验证成功修改用户")
            print("修改用户")


3.功能右边测试用例描述定制

  • 测试用例的描述定制:有两种方式

    • 方式一:@allure.description()
    • 方式二:allure.dynamic.description()

    方法一:

    python 复制代码
    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        @allure.description("这是验证登陆是否成功")
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            print("登陆")
    
        @allure.story("用户注册接口")
        @allure.severity(allure.severity_level.CRITICAL)
        @allure.description("这是验证注册是否成功")
        def test_register(self):
            allure.dynamic.title("用例名称-验证成功注册")
            print("注册")
    
        @allure.story("添加用户")
        @allure.severity(allure.severity_level.NORMAL)
        @allure.description("这是验证添加用户是否成功")
        def test_add_user(self):
            allure.dynamic.title("用例名称-验证成功添加用户")
            print("添加用户")
    
        @allure.story("删除用户")
        @allure.severity(allure.severity_level.MINOR)
        @allure.description("这是验证删除用户是否成功")
        def test_delete_user(self):
            allure.dynamic.title("用例名称-验证成功删除用户")
            print("删除用户")
    
        @allure.story("修改用户")
        @allure.severity(allure.severity_level.TRIVIAL)
        @allure.description("这是验证修改用户是否成功")
        def test_update_user(self):
            allure.dynamic.title("用例名称-验证成功修改用户")
            print("修改用户")



    方法二:

    python 复制代码
    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            allure.dynamic.description("这是验证登陆是否成功")
            print("登陆")
    
        @allure.story("用户注册接口")
        @allure.severity(allure.severity_level.CRITICAL)
        def test_register(self):
            allure.dynamic.title("用例名称-验证成功注册")
            allure.dynamic.description("这是验证注册是否成功")
            print("注册")
    
        @allure.story("添加用户")
        @allure.severity(allure.severity_level.NORMAL)
        def test_add_user(self):
            allure.dynamic.title("用例名称-验证成功添加用户")
            allure.dynamic.description("这是验证添加用户是否成功")
            print("添加用户")
    
        @allure.story("删除用户")
        @allure.severity(allure.severity_level.MINOR)
        def test_delete_user(self):
            allure.dynamic.title("用例名称-验证成功删除用户")
            allure.dynamic.description("这是验证删除用户是否成功")
            print("删除用户")
    
        @allure.story("修改用户")
        @allure.severity(allure.severity_level.TRIVIAL)
        def test_update_user(self):
            allure.dynamic.title("用例名称-验证成功修改用户")
            allure.dynamic.description("这是验证修改用户是否成功")
            print("修改用户")

4.功能右边测试用例链接定制

  • @allure.link():接口访问链接

  • @allure.issue():bug链接

  • @allure.testcase():测试用例链接

    python 复制代码
    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        @allure.link("接口访问链接")
        @allure.issue("bug链接")
        @allure.testcase("测试用例链接")
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            allure.dynamic.description("这是验证登陆是否成功")
            print("登陆")

5.功能右边测试用例测试步骤定制

  • 测试步骤定制:两种方式(常用第二种

    • 方式一:@allure.step()
    • 方式二:with allure.step():

    方法一:

    python 复制代码
    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        @allure.link("接口访问链接")
        @allure.issue("bug链接")
        @allure.testcase("测试用例链接")
        @allure.step("测试步骤:输入用户名、输入密码、点击登陆")
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            allure.dynamic.description("这是验证登陆是否成功")
            print("登陆")


    方法二:

    python 复制代码
    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        @allure.link("接口访问链接")
        @allure.issue("bug链接")
        @allure.testcase("测试用例链接")
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            allure.dynamic.description("这是验证登陆是否成功")
            with allure.step("第一步:输入用户名"):
                print("输入用户名")
            with allure.step("第二步:输入密码"):
                print("输入密码")
            with allure.step("第三步:点击登陆"):
                print("点击登陆")
            print("登陆")


6.功能右边测试用例测试步骤+附件定制

  • 测试用例步骤+附件(一般用于错误截图(一般用于web自动化测试))

    python 复制代码
    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        @allure.link("接口访问链接")
        @allure.issue("bug链接")
        @allure.testcase("测试用例链接")
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            allure.dynamic.description("这是验证登陆是否成功")
            print("登陆")
            # 测试步骤
            for i in range(1, 6):
                with allure.step("第" + str(i) + "步"):
                    pass
            # 错误截图
            with open("D:\\error.png", mode="rb") as f:
                result = f.read()
                allure.attach(body=result, name="错误截图", attachment_type=allure.attachment_type.PNG)

6.功能右边测试用例测试步骤+文本内容定制

  • 文本内容定制:一般应用于接口自动化

  • 文本内容定制:allure.attach("文本内容", name="文本名称", attachment_type=allure.attachment_type.TEXT)

    python 复制代码
    import allure
    
    
    @allure.epic("项目名称-智考1.0")
    @allure.feature("模块-用户管理模块")
    class TestFirstClass():
    
        @allure.story("用户登陆接口")
        @allure.severity(allure.severity_level.BLOCKER)
        @allure.link("接口访问链接")
        @allure.issue("bug链接")
        @allure.testcase("测试用例链接")
        def test_login(self):
            allure.dynamic.title("用例名称-验证成功登陆")
            allure.dynamic.description("这是验证登陆是否成功")
            print("登陆")
            # 测试步骤
            for i in range(1, 6):
                with allure.step("第" + str(i) + "步"):
                    pass
            # 错误截图
            with open("D:\\error.png", mode="rb") as f:
                result = f.read()
                allure.attach(body=result, name="错误截图", attachment_type=allure.attachment_type.PNG)
            # 接口自动化:文本
            # 请求四要素
            allure.attach("接口地址:https://www.baidu.com", name="文本1", attachment_type=allure.attachment_type.TEXT)
            allure.attach("接口参数:{一般从yaml中获取}", name="文本2", attachment_type=allure.attachment_type.TEXT)
            allure.attach("接口请求方式:get", name="文本3", attachment_type=allure.attachment_type.TEXT)
            allure.attach("请求头:{一般从yaml中获取}", name="文本4", attachment_type=allure.attachment_type.TEXT)
            # 响应内容
            allure.attach("响应文本:{一般从yaml中获取}", name="文本5", attachment_type=allure.attachment_type.TEXT)
            allure.attach("接口执行结果:成功/失败", name="文本6", attachment_type=allure.attachment_type.TEXT)

八、局域网下查看allure测试报告

1.局域网(内网)

让公司内部局域网下其他人员查看allure测试报告(通过下面方法,将得到的链接地址分析给其他人员即可)

  • 命令:allure open allure测试报告地址

    python 复制代码
    allure open ./report


2.局域网(外网)

需要做网络映射,需要运维人员去完成,不属于测试的工作范围

相关推荐
程序员杰哥10 小时前
接口自动化测试之pytest 运行方式及前置后置封装
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
互联网杂货铺13 小时前
功能测试、性能测试、安全测试详解
自动化测试·软件测试·python·功能测试·测试工具·性能测试·安全性测试
测试老哥15 小时前
Pytest+Selenium UI自动化测试实战实例
自动化测试·软件测试·python·selenium·测试工具·ui·pytest
水银嘻嘻20 小时前
07 APP 自动化- appium+pytest+allure框架封装
python·appium·自动化·pytest
天才测试猿1 天前
接口自动化测试之pytest接口关联框架封装
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·pytest
互联网杂货铺2 天前
unittest自动化测试实战
自动化测试·软件测试·python·测试工具·程序人生·职场和发展·测试用例
not coder2 天前
Pytest Fixture 详解
数据库·pytest
Tom Boom3 天前
40. 自动化异步测试开发之编写异步业务函数、测试函数和测试类(类写法)
运维·自动化测试·python·selenium·自动化·自动化测试框架·异步编程
not coder3 天前
pytest 常见问题解答 (FAQ)
开发语言·python·pytest
程序员的世界你不懂3 天前
(1)pytest简介和环境准备
pytest