当前位置:   article > 正文

接口测试框架开发实践:测试报告插件allure-pytest详解

接口测试框架开发实践:测试报告插件allure-pytest详解

Python 主流自动化测试报告插件有三个:HTMLTestRunner、Pytest-html 和 Allure。HTMLTestRunner是一个比较古老的报告模板,界面也不是很好看。Pytest-html界面很简洁,看起来也很直观,是一款比较不错的报告插件。如果你想提升下逼格,让你的自动化测试报告变得高大上,那么请选择 Allure 。

Allure 是一款轻量级的开源自动化测试报告生成框架。它支持绝大部分测试框架,比如TestNG、Junit 、pytest、unittest 等。本文主要介绍 Pytest 框架结合 Allure 生成格式统一、美观的测试报告。

安装&配置环境变量

Allure下载最新版本:

  1. vim ~/.zshrc
  2.   PATH="/Users/rain/allure-2.9.0/bin:${PATH}"
  3.   export PATH
  4.   source ~/.zshrc

环境变量配置好后,allure测试一下。

注意:allure-pytest与allure版本务必一致,否则会生成空白报告。

pip3 install allure-pytest

生成报告

生成测试报告仅需两步。

1.生成测试数据 pytest test_allure_demo.py --alluredir ./report

2.生成测试报告 allure serve report

我随便写了一段代码测试一下,仅供参考。

  1. #!/usr/bin/env python
  2.   # -*- encoding: utf-8 -*-
  3.   '''
  4.   @File : testcase_001.py
  5.   @Time : 2021/06/20 12:07:09
  6.   @Author : 软件质量保障
  7.   @wechat : ISTE1024
  8.   @Email : byteflow@163.com
  9.   @Blog : https://www.zhihu.com/people/iloverain1024
  10.   @Copyright : 侵权必究
  11.   '''
  12.   import pytest
  13.   import requests
  14.   import yaml
  15.   import allure
  16.   @allure.feature("编辑页面")
  17.   class RequestHandler:
  18.    def __init__(self):
  19.    """session管理器:维持会话,可以让我们在跨请求时保存某些参数"""
  20.    self.session = requests.session()
  21.    def httpcore(self, method, url, params=None, data=None, json=None, headers=None, **kwargs):
  22.    return self.session.request(method,url, params=params, data=data, json=json, headers=headers,**kwargs)
  23.    def close_session(self):
  24.    """关闭session"""
  25.    self.session.close()
  26.   @allure.step("编辑页面")
  27.   def get_test_data(test_data_path):
  28.    case = [] # 存储测试用例名称
  29.    http = [] # 存储请求对象
  30.    expected = [] # 存储预期结果
  31.    data = yaml.safe_load(open(test_data_path,encoding='utf-8'))
  32.    for td in data:
  33.    case.append(td.get('case', ''))
  34.    http.append(td.get('http', {}))
  35.    expected.append(td.get('expected', {}))
  36.    parameters = zip(case, http, expected)
  37.    return case, parameters
  38.   cases, params = get_test_data('./testcases/data/TEST_DATA_001.yaml')
  39.   @allure.story("测试")
  40.   @pytest.mark.parametrize("case,http,expected", list(params), ids=cases)
  41.   def test_main(case, http, expected):
  42.    method = http["method"]
  43.    url = http["path"]
  44.    headers = http["headers"]
  45.    json = http["body"]['payload']
  46.    req = RequestHandler()
  47.    login_res = req.httpcore(method, url=url, headers=headers, data=json)
  48.    print('--登陆结果---')
  49.    assert login_res.json()['code'] == expected['response']['code']

1.生成测试数据

# 其中 --alluredir参数的作用是指出生成的报告文件夹,运行完后就会在当前目录下生成一个report文件夹,report文件夹下放着生成报告文件。

pytest test_allure_demo.py --alluredir ./report

2.生成测试报告

# 执行后,会自动打开浏览器的一个页面来显示测试报告。

allure serve report

 

报告结构

通过上图的报告页面可以看到,allure整体分为7部分:

Overview、Categories、Suites、Graphs、Timelines、Behavior、Packages。

1.Overview

概览页是报告所有内容的汇总页,可以通过点击对应的元素跳转到相应的页面。大体上汇总以下内容:

·测试结果统计 - 报告执行结果统计。

· 执行 - 如果此报告表示几次测试执行,这里将显示每次执行的统计数据。

· 历史趋势 - 如果测试积累了一些历史数据,它的趋势将被计算并显示在图表中。

· 环境 - 测试环境的信息。

· 测试套件 - 可以跳转到Suites页面。

· 类别 - 点击跳转到Categories页面。

空白处内容作者没有配置,所以没有展示。

2.Categories

默认存在两类缺陷:

· 产品缺陷(测试失败)

· 测试缺陷(测试中断)

当然,类别也提供创建自定义缺陷分类的方法,以应用于测试结果分类。可以在 allure-results 目录中添加 categories.json 文件。

  1.  [
  2.    {
  3.    "name": "Ignored tests",
  4.    "matchedStatuses": ["skipped"]
  5.    },
  6.    {
  7.    "name": "Infrastructure problems",
  8.    "matchedStatuses": ["broken", "failed"],
  9.    "messageRegex": ".*bye-bye.*"
  10.    },
  11.    {
  12.    "name": "Outdated tests",
  13.    "matchedStatuses": ["broken"],
  14.    "traceRegex": ".*FileNotFoundException.*"
  15.    },
  16.    {
  17.    "name": "Product defects",
  18.    "matchedStatuses": ["failed"]
  19.    },
  20.    {
  21.    "name": "Test defects",
  22.    "matchedStatuses": ["broken"]
  23.    }
  24.   ]

参数:

·name [必填]:分类的名字

· matchedStatuses [可选]:测试用例的运行状态,默认是["failed", "broken", "passed", "skipped", "unknown"]

· messageRegex [可选]:测试用例运行的错误信息,使用正则表达式匹配。默认是".*"

· traceRegex [可选]:测试用例运行的堆栈信息,使用正则表达式匹配。默认是".*"

3.Suites

在测试集选项卡上,可以按测试套件和类分组展示已执行测试。

4.Graphs

图表页上可以查看从测试数据收集的不同统计信息: 状态和持续时间图等。

5.Timelines

时间轴能够展示可视化测试执行,Allure 适配器收集测试执行时间,并且在选项卡上根据顺序进行排列。

6.Behaviors

allure支持行为驱动测试的展示,该选项卡根据特性和故事标签对测试结果进行分组展示。

7.Packages

根据不同的测试代码所在的package以树状布局展示测试结果。

Allure常用特性

@allure.feature:用于描述被测试产品功能模块

@allure.story:用于描述feature的用户场景,即功能子模块

@allure.step : # 用于描述测试步骤,将会输出到报告中

@allure.attach:用于向测试报告中输入一些附加的信息,通常是一些测试数据,截图等

@allure.severity:标注测试用例的重要级别

  1. blocker:阻塞缺陷
  2.   critical:严重缺陷
  3.   normal:一般缺陷
  4.   minor:次要缺陷
  5.   trivial:轻微缺陷

@allure.description: 标注测试用例的描述

@allure.issue:对应缺陷管理系统里面的链接

@allure.link:定义一个链接,在测试报告展现

空白页问题

allure空白页 报错 Uncaught TypeError: P.a.registerLanguage is not a function,Uncaught ReferenceError: allure is not defined问题解决方法。

原因:本地安装的allure版本和allure-pytes插件版本不一致造成的;

查看二者的版本:

#查看allure版本

allure --version

# allure-pytest插件版本

python3 list

  1. ​现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
  2. 如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
  3. 可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
  4. 分享他们的经验,还会分享很多直播讲座和技术沙龙
  5. 可以免费学习!划重点!开源的!!!
  6. qq群号:485187702【暗号:csdn11

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走! 希望能帮助到你!【100%无套路免费领取】

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/603744
推荐阅读
相关标签
  

闽ICP备14008679号