一、前言

对于软件测试工作来说,测试报告是非常重要的工作产出。一个漂亮、清晰、格式规范、内容完整的测试报告,既能最大化我们的测试工作产出,又能够减少开发人员和测试人员的沟通成本。

本篇文章将介绍如何使用开源的测试报告生成框架Allure生成规范、格式统一、美观的测试报告。当然这也有弊端,这种测试报告会增加开发时间,因为你需要给用例增加各种各样的描述信息而增加工作量,如果从编码成本角度的出发,可以考虑pytest-html。

二、学习目标

1.allure-pytest插件安装

2.allure-pytest插件应用

三、知识点

1.allure-pytest插件安装

注:allure是基于Java的一个程序,需要Java1.8的环境,没有安装需要去安装一下。

  • 安装allure-pytest插件

    pip install allure-pytest
    
  • 安装allure命令工具

    Windows 安装 allure-commandline:

    • 下载 allure-commandline

      https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/ #下载地址,下最新版就可以
      

    • 解压后,将bin目录添加到环境变量

    • 验证安装成功

      cmd输入:

       allure --version
      

2.allure-pytest插件应用

示例代码:

import pytest

def test_success():
    """this test succeeds"""
    assert True


def test_failure():
    """this test fails"""
    assert False


def test_skip():
    """this test is skipped"""
    pytest.skip('for a reason!')


def test_broken():
    raise Exception('oops')
  • 生成Allure测试报告

    • 第一步,生成测试报告数据

      在pytest执行测试的时候,指定–alluredir选项及结果数据保存的目录:

      pytest test_allure_demo1.py --alluredir ./result/
      
    • 第二步,生成测试报告页面

      • 生成离线测试报告
      #通过下面的命令将./result/目录下的测试数据生成测试报告页面
      allure generate ./result/ -o ./report/ --clean
      

      –clean选项目的是先清空测试报告目录,再生成新的测试报告。

      • 生成在线测试报告:
      allure serve result #result是报告源文件目录
      

      注:生成在线报告必须以管理员权限运行命令。

  • 修改报告的LOGO

    1.修改配置文件,进入‘E:\allure-2.13.7\config’ 目录,打开 ‘allure.yml’ 文件,在最下面增加一行 ‘- custom-logo-plugin ' , 特别要注意层级关系。

    plugins:
      - junit-xml-plugin
      - xunit-xml-plugin
      - trx-plugin
      - behaviors-plugin
      - packages-plugin
      - screen-diff-plugin
      - xctest-plugin
      - jira-plugin
      - xray-plugin
      - custom-logo-plugin
    

    2.上传logo

    进入按照allure路径下D:\App\allure-2.15.0\plugins\custom-logo-plugin\static

    3.修改‘styles.css’ 文件 来配置logo,不会的可以参考我的设置。

    .side-nav__brand {
    background: url('login-0.png') no-repeat left center !important;
    padding-left: 180px !important;
    margin-left: 10px;
    }
    

    效果展示: