栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

软件质量保障

专注测试圈,自动化测试、测试平台开发、测试新技术、大厂测试岗面经分享, 可以帮忙内推BATJ等大厂!欢迎加VX沟通交流: ISTE1024

公众号

目录

  • 安装&配置环境变量

  • 生成报告

  • 1.生成测试数据

  • 2.生成测试报告

  • 报告结构

  • 1.Overview

  • 2.Categories

  • 3.Suites

  • 4.Graphs

  • 5.Timelines

  • 6.Behaviors

  • 7.Packages

  • Allure常用特性

  • 空白页问题

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

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

安装&配置环境变量

Allure下载最新版本:

https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/2.9.0/

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

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

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

生成测试报告仅需两步。

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

2.生成测试报告 allure serve report

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

#!/usr/bin/env python
# -*- encoding: utf-8 -*-
'''
@File    :   testcase_001.py
@Time    :   2021/06/20 12:07:09
@Author  :   软件质量保障
@wechat  :   ISTE1024
@Email   :   byteflow@163.com
@Blog    :   https://www.zhihu.com/people/iloverain1024
@Copyright : 侵权必究
'''
import pytest
import requests
import yaml
import allure

@allure.feature("编辑页面")
class RequestHandler:
    def __init__(self):
        """session管理器:维持会话,可以让我们在跨请求时保存某些参数"""
        self.session = requests.session()

    def httpcore(self, method, url, params=None, data=None, json=None, headers=None, **kwargs):
        return self.session.request(method,url, params=params, data=data, json=json, headers=headers,**kwargs)

    def close_session(self):
        """关闭session"""
        self.session.close()

@allure.step("编辑页面")
def get_test_data(test_data_path):
    case = []  # 存储测试用例名称
    http = []  # 存储请求对象
    expected = []  # 存储预期结果
    data = yaml.safe_load(open(test_data_path,encoding='utf-8'))
    for td in data:
        case.append(td.get('case', ''))
        http.append(td.get('http', {}))
        expected.append(td.get('expected', {}))
    parameters = zip(case, http, expected)
    return case, parameters


cases, params = get_test_data('./testcases/data/TEST_DATA_001.yaml')

@allure.story("测试")
@pytest.mark.parametrize("case,http,expected", list(params), ids=cases)
def test_main(case, http, expected):
    method = http["method"]
    url = http["path"]
    headers = http["headers"]
    json = http["body"]['payload']
    req = RequestHandler()
    login_res = req.httpcore(method, url=url, headers=headers, data=json)
    print('--登陆结果---')
    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 文件。

[
  {
    "name": "Ignored tests", 
    "matchedStatuses": ["skipped"] 
  },
  {
    "name": "Infrastructure problems",
    "matchedStatuses": ["broken", "failed"],
    "messageRegex": ".*bye-bye.*" 
  },
  {
    "name": "Outdated tests",
    "matchedStatuses": ["broken"],
    "traceRegex": ".*FileNotFoundException.*" 
  },
  {
    "name": "Product defects",
    "matchedStatuses": ["failed"]
  },
  {
    "name": "Test defects",
    "matchedStatuses": ["broken"]
  }
]

参数:

  • 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:标注测试用例的重要级别

blocker:阻塞缺陷
critical:严重缺陷
normal:一般缺陷
minor:次要缺陷
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

目前allure-pytest最新版本是2.9.x

https://pypi.org/project/allure-pytest/

而allure则2.15.x了。如果你默认安装allure,很大可能是最新版本,所以版本不一致

解决方案:下载allure-commandline 2.9.x版本即可

https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/2.9.0/

内推福利

扫我投递简历(校园招聘)

社招需要内推的可以直接联系我or私信我(VX: ISTE1024)

往期文章推荐

往期推荐

接口测试框架开发实践4:HTTP方法封装

接口测试框架开发实践3:用例管理模块

经验分享|测试工程师转型测试开发历程

接口测试框架开发实践5:配置文件读取

接口测试框架开发实践2:接口自动化测试框架设计思路

接口自动化测试框架实践1:接口测试概述

我在阿里做测开

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/293603.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号