zoukankan      html  css  js  c++  java
  • 用 Pytest+Allure 生成漂亮的 HTML 图形化测试报告

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

    本篇文章将介绍如何使用开源的测试报告生成框架 Allure 生成规范、格式统一、美观的测试报告。

    通过这篇文章的介绍,你将能够:

    • 将 Allure 与 Pytest 测试框架相结合;

    • 如何定制化测试报告内容

    • 执行测试之后,生成 Allure 格式的测试报告。


    1、Allure测试报告介绍

    Allure 是一款非常轻量级并且非常灵活的开源测试报告生成框架。它支持绝大多数测试框架, 例如 TestNG、Pytest、JUint
    等。它简单易用,易于集成。下面就 Pytest 如何与 Allure 集成做详细介绍。


    2、Pytest 框架集成 Allure

    Pytest 是 Python 的单元测试框架,非常方便和易用。强烈推荐对于用 Python 进行测试工作的小伙伴使用这个测试框架,相比与 Python
    自带的 UnitTest 好用太多太多。今天我们主要是介绍如何将测试报告生成工具 Allure 集成到 Pytest 中。

    2.1 安装 Allure Pytest Adaptor

    Allure Pytest Adaptor 是 Pytest 的一个插件,通过它我们可以生成 Allure 所需要的用于生成测试报告的数据。安装
    pytest-allure-adaptor 插件方法:

    $ pip install pytest-allure-adaptor  
    

    2.2 使用Allure Pytest Adaptor改造基于Pytest的测试用例

    pytest-allure-adaptor 官网中详细介绍了 pytest-allure-adaptor
    所具有的功能。本篇文章不会再翻译一遍,而是从实际入手,给大家介绍如何将其应用到自己的框架中。

    为了使用 Allure 生成报告,需要在 conftest.py 和测试脚本中加入 Allure 特性。

    首先,conftest.py 中可以通过 allure.environment 方法将测试环境的信息输出到报告中,比如将测试时用的 host 和测试用的
    browser 添加到测试报告中:

    #!/usr/bin/env python  
    # coding=utf-8  
      
    import pytest  
    import allure  
    import yaml  
      
    @pytest.fixture(scope="session", autouse=True)  
    def env(request):  
        """  
        Parse env config info  
        """  
        root_dir = request.config.rootdir  
        config_path = '{0}/config/env_config.yml'.format(root_dir)  
        with open(config_path) as f:  
            env_config = yaml.load(f) # 读取配置文件  
      
        allure.environment(host=env_config['host']['domain']) # 测试报告中展示host  
        allure.environment(browser=env_config['host']['browser']) # 测试报告中展示browser  
      
        return env_config  
    

    接着,在测试脚本中,添加 allure 特性,直接看下面的脚本,我通过在脚本中添加注释的方式给大家解释 allure 特性的用途。比如测试脚本是

    test_shopping_trolley.py:

    #!/usr/bin/env python  
    # coding=utf-8  
      
    import pytest  
    import allure  
      
      
    @allure.feature('购物车功能')  # feature定义功能  
    class TestShoppingTrolley(object):  
        @allure.story('加入购物车')  # story定义用户场景  
        def test_add_shopping_trolley(self):  
            login('刘春明', '密码')  # 调用“步骤函数”  
            with allure.step("浏览商品"):  # 将一个测试用例分成几个步骤,将步骤打印到测试报告中,步骤2  
                allure.attach('商品1', '刘春明')  # attach可以打印一些附加信息  
                allure.attach('商品2', 'liuchunming')  
            with allure.step("点击商品"):  # 将一个测试用例分成几个步骤,将步骤打印到测试报告中,步骤3  
                pass  
            with allure.step("校验结果"):  
                allure.attach('期望结果', '添加购物车成功')  
                allure.attach('实际结果', '添加购物车失败')  
                assert 'success' == 'failed'  
      
        @allure.story('修改购物车')  
        def test_edit_shopping_trolley(self):  
            pass  
      
        @pytest.mark.skipif(reason='本次不执行')  
        @allure.story('删除购物车')  
        def test_delete_shopping_trolley(self):  
            pass  
      
      
    @allure.step('用户登录')  # 还可以将一个函数作为一个步骤,调用此函数时,报告中输出一个步骤,步骤名字通常是函数名,我把这样的函数叫“步骤函数”  
    def login(user, pwd):  
        print(user, pwd)  
    

    上面使用了Allure的几个特性:

    • @allure.feature # 用于定义被测试的功能,被测产品的需求点

    • @allure.story # 用于定义被测功能的用户场景,即子功能点

    • with allure.step # 用于将一个测试用例,分成几个步骤在报告中输出

    • allure.attach # 用于向测试报告中输入一些附加的信息,通常是一些测试数据信息

    • @pytest.allure.step # 用于将一些通用的函数作为测试步骤输出到报告,调用此函数的地方会向报告中输出步骤


    3、生成 Allure 测试报告

    测试脚本中添加了 Allure 特性之后,在执行测试的时候需要先生成 Allure 报告所需要的测试结果数据。在 py.test 执行测试的时候,指定
    –alluredir 选项及测试数据保存的目录即可:

    $ py.test test/ --alluredir ./result/  
    

    ./result/ 中保存了本次测试的结果数据。另外,还可以执行指定 features 或者 stories
    执行一部分测试用例,比如执行‘购物车功能’下的‘加入购物车’子功能的测试用例:

    $ py.test test/ --allure_features='购物车功能' --allure_stories='加入购物车'  
    

    接下来我们可以利用上面命令产生的测试数据生成 Allure 测试报告了。生成 Allure 测试报告有两种方式:一个是命令行方式,一个是利用 Jenkins
    插件。下面分别介绍。

    3.1 命令行方式

    3.1.1 安装命令行工具

    首先需要安装命令行工具,如果是 Mac 电脑,推荐使用 Homebrew 安装。

    $ brew install allure  
    
    3.1.2 生成测试报告

    安装完成后,通过下面的命令将 ./result/ 目录下的测试数据生成测试报告:

    $ allure generate ./result/ -o ./report/ --clean  
    

    这样在 ./report/ 目录下就生成了 Allure 的测试报告了。–clean 目的是先清空测试报告目录,再生成新的测试报告。

    3.1.3 打开测试报告

    通过下面的命令打开测试报告:

    $ allure open -h 127.0.0.1 -p 8083 ./report/  
    

    本机的浏览器将打开网页

    http://127.0.0.1:8083/index.html

    展示测试报告。

    3.1.4 测试报告解读

    打开生成的测试报告后,浏览器被自动调起,展示测试报告。下面我们分别看看测试报告的几个页面。

    1. 首页

    首页中展示了本次测试的测试用例数量,成功用例、失败用例、跳过用例的比例,测试环境信息,SUITES,FEATURES BY
    STORIES等基本信息,当与Jenkins做了持续置成后,TREND区域还将显示,历次测试的通过情况。

    首页的左边栏,还从不同的维度展示测试报告的其他信息,大家可以自己点进去看看。

    2. Behaviors

    接下来,我们点击一下FEATURES BY STORIES,将进入Behaviors页面,这个页面按照FEATURES和
    STORIES展示测试用例的执行结果:

    从这个页面可以看到“购物车功能”这个FEATURES包含的三个STORIES的测试用例执行情况。

    3. Suites

    Allure测试报告将每一个测试脚本,作为一个Suite。在首页点击Suites区域下面的任何一条Suite,都将进入Suites页面。

    这个页面,将脚本的目录结果展示本次所有的测试用例执行情况。

    4. 测试用例页面

    在Suites页面上点击任何一条测试用例,Suites页面的右侧将展示这条用例的详细执行情况。

    从这个页面可以看到测试用例执行的每一个步骤,以及每个步骤的执行结果。测试用例为什么失败,这里一目了然。

    3.2 利用Jenkins插件方式

    3.2.1 安装 Allure Plugin

    首先需要给Jenkins安装Allure Plugin。在Jenkins的插件管理页面,搜索“allure”,在搜索结果页,选择“Allure
    Jenkins Plugin”进行安装。

    安装完成之后重启一下Jenkins。在Jenkins的“全局工具管理”页面,找到Allure Commandline模块进行安装:

    点击后,弹出下面的页面,输入Allure的命令别名和版本后,点击Apply 和Save。

    3.2.2 配置Job

    按照下面的图示,在Excute Shell和构建后操作部分写上对应的配置信息,即可。

    这样,我们的Jenkins Job执行完测试用例时候,将在Job的主页面上看到Allure Report图标,点击进去就看到了Allure
    Report报告。

    4、团队实践建议

    团队内部可能不同项目使用的测试框架不一样,每个测试框架生成的测试报告也不一样。但由于 Allure 报告支持很多测试框架,通过 Allure
    可以生成格式一致的测试报告,这就对外提供格式一致的测试报告提供了方便。

    建议:团队内部都采用 Allure 生成测试报告。由于团队内部有的项目采用的 Java+TestNG 的测试架构,后面有时间,也介绍一下如何在 TestNG
    框架如何集成 Allure。

    ** _
    来霍格沃兹测试开发学社,学习更多软件测试与测试开发的进阶技术,知识点涵盖web自动化测试 app自动化测试、接口自动化测试、测试框架、性能测试、安全测试、持续集成/持续交付/DevOps,测试左移、测试右移、精准测试、测试平台开发、测试管理等内容,课程技术涵盖bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相关技术,全面提升测试开发工程师的技术实力
    QQ交流群:484590337
    公众号 TestingStudio
    点击获取更多信息

  • 相关阅读:
    AcWing 1027. 方格取数 dp
    AcWing 1014. 登山 dp
    acwing 482. 合唱队形 dp
    LeetCode 1463. 摘樱桃II dp
    LeetCode 100. 相同的树 树的遍历
    LeetCode 336. 回文对 哈希
    LeetCode 815. 公交路线 最短路 哈希
    算法问题实战策略 DARPA大挑战 二分
    算法问题实战策略 LUNCHBOX 贪心
    AcWing 1100. 抓住那头牛 BFS
  • 原文地址:https://www.cnblogs.com/hogwarts/p/15825039.html
Copyright © 2011-2022 走看看