09 接口自动化-用例管理框架pytest之allure报告定制以及数据驱动

文章目录

      • 一、企业级的Allure报告的定制
        • 左边的定制:
        • 右边的定制:
          • 1.用例的严重程度/优先级
          • 2.用例描述
          • 3.测试用例连接的定制
          • 4.测试用例步骤的定制
          • 5.附件的定制
      • 二、企业中真实的定制有哪些?
      • 三、allure报告如何在本地访问
      • 四、allure中的数据驱动装饰器
        • 第一种用法
        • 第二种用法
        • 第三种用法
          • YAML的数据文件:
          • YAML数据驱动实现:

一、企业级的Allure报告的定制

左边的定制:

1.史诗(项目名称):@allure.epic(“项目名称:接口自动化测试”)
2.特性(模块名称):@allure.feature(“模块名称:用户模块”)
3.分组(接口名称):@allure.story(“接口名称:查询用户”)
4.测试用例标题:

  • @allure.title(“测试用例标题:输入正确的条件匹配成功”),适用于一个方法对
    应一个用例。
  • allure.dynamic.title(“测试用例标题:输入正确的条件匹配成功”),适用于一个
    方法对应多个用例。也就是有数据驱动的情况。
import allure
import pytest@allure.epic("项目名称:接口自动化测试")
@allure.feature("模块名称:用户模块")
class User:@allure.story("接口名称:查询用户")@allure.title("测试用例标题:输入正确的条件匹配成功")def test_user(self):# allure.dynamic.title("测试用例标题:输入正确的条件匹配成功")print("test_user" )assert 'abc' in 'abcd'
右边的定制:
1.用例的严重程度/优先级
  • blocker:中断缺陷&致命bug:内存泄漏,用户数据丢失,系统奔溃。
  • critical:临界缺陷&严重bug:功能未实现,功能错误,重复提交
  • normal:一般缺陷&一般bug,条件查询有误,大数据了无响应等
  • minor:次要缺陷:提示bug,颜色搭配不好,字体排列不整齐,错别字。
  • trivial:轻微缺陷:轻微bug,没有使用专业术语,必填项无提示,建议。

@allure.severity(allure.severity_level.BLOCKER)
注意:这个装饰器可以修饰方法也可以修饰类。

2.用例描述

和用例标题一样,有两种写法:@allure.description("") allure.dynamic.description("")

import allure
import pytestclass TestUser:@allure.description("用户测试用例描述")@pytest.mark.userdef test_get_userinfo(self):# allure.dynamic.description("用户测试用例描述2")print("get_userinfo" )assert 'abc' in 'abcd'
3.测试用例连接的定制
  • 接口地址:
  • Bug地址:
  • 测试用例的地址:
import allure
import pytestclass TestUser:@allure.link(name="接口地址", url="https://api.weixin.qq.com/cgi‐bin/token")@allure.issue(name="Bug连接", url="https://www.zentao.net/")@allure.testcase(name="测试用例地址", url="https://www.zentao.net/")def test_get_userinfo(self):print("get_userinfo" )assert 'abc' in 'abcd'
4.测试用例步骤的定制

有两种写法:

  • @allure.step("") :不建议使用,不灵活,只能传入一个title值,不能写多个步骤
  • with allure.step(""):推荐使用,比较灵活
import allure
import pytestclass TestUser:# @allure.step("测试步骤")  不建议使用,不灵活,只能传入一个title值,不能写多个步骤@pytest.mark.userdef test_get_userinfo(self):# 增加测试步骤-建议使用for a in range(1, 5):with allure.step("测试用例步骤" + str(a) + ""):print("步骤" + str(a) + "执行的脚本")print("get_userinfo" )assert 'abc' in 'abcd'
5.附件的定制

body=附件内容, name=None文件名, attachment_type=None文件扩展名

  • web自动化
# web自动化
with open(r"./screenshots/logo.png", mode="rb") as f:allure.attach(body=f.read(), name="用户测试错误截图",attachment_type=allure.attachment_type.PNG)
  • 接口自动化
#接口自动化
allure.attach(body="https://api.weixin.qq.com/cgi‐bin/token", name="请求地址:",attachment_type=allure.attachment_type.TEXT)allure.attach(body="get", name="请求方式:", attachment_type=allure.attachment_type.TEXT)data = {"grant_type": "client_credential","appid": "wx6b11b3efd1cdc290","secret": "106a9c6157c4db5f6029918738f9529d"}allure.attach(body=json.dumps(data), name="请求数据:", attachment_type=allure.attachment_type.TEXT)rep = requests.get(url="https://api.weixin.qq.com/cgi‐bin/token", params=data)allure.attach(body=str(rep.status_code)+rep.text, name="响应数据:", attachment_type=allure.attachment_type.TEXT)

二、企业中真实的定制有哪些?

  • 1.@allure.epic(“项目名称”)
  • 2.@allure.feature(“模块名称”)
  • 3.@allure.story(“接口名称”)
  • 4.@allure.severity(allure.severity_level.BLOCKER) 严重程度
  • 5.allure.dynamic.title(“用例名称:测试用例名称”)
  • 6.allure.dynamic.description(“用例描述:测试用例描述”)
  • 7.with allure.step(“测试步骤的名称”)
  • 8.allure.attach(body, name, attachment_type, extension) 测试用例附件

7与8一般会进行封装,后期讲解

三、allure报告如何在本地访问

因为pycharm自带容器:tomcat,Nginx,weblogic。有以下两种方式实现本地访问

  • 1.在本地搭建本地服务器。
  • 2.通过启动服务打开allure报告。(简单)
    allure open [报告路径]

四、allure中的数据驱动装饰器

@pytest.mark.parametrize(参数名,数据(list,tuple,字典列表,字典元祖))

第一种用法
@allure.story("接口名称:测试数据驱动")
@pytest.mark.parametrize("args_name",["无忧渡","藏海传","折腰"])
@pytest.mark.user
def test_get_data(self,args_name):print(args_name)
第二种用法
@allure.story("接口名称:测试数据驱动")
@pytest.mark.parametrize("order,name",[["01","《无忧渡》"],["04","《藏海传》"],["03","《折腰》"]])
@pytest.mark.user
def test_get_data(self,order,name):print("序号:"+order+"剧名:"+name)
第三种用法

使用yaml 数据进行数据驱动
YAML有两种数据:

  • -开头的代码list
  • 键值对:key:value
YAML的数据文件:
 -name: get correct user tokendescription: When trying to obtain a user token with a valid appid, correct secret, and correct grant_type, the request will succeed.request:url: https://api.weixin.qq.com/cgi-bin/tokenmethod: GETdata:appid: wx74a8627810cfa309secret: e40a02f9d79a8097df497e6aaf93ab81grant_type: client_credentialvalidate: None-name: don't get correct user tokendescription: When trying to obtain a user token with an empty appid, correct secret, and correct grant_type, an error occurs.request:url: https://api.weixin.qq.com/cgi-bin/tokenmethod: GETdata:appid:secret: e40a02f9d79a8097df497e6aaf93ab81grant_type: client_credentialvalidate: None-name: don't get correct user tokendescription: When trying to obtain a user token with an correct appid, error secret, and correct grant_type, an error occurs.request:url: https://api.weixin.qq.com/cgi-bin/tokenmethod: GETdata:appid: wx74a8627810cfa308secret: e40a02f9d79a8097df497e6aaf93ab81grant_type: client_credentialvalidate: None-name: don't get correct user tokendescription: When trying to obtain a user token with an correct appid, correct secret, and empty grant_type, an error occurs.request:url: https://api.weixin.qq.com/cgi-bin/tokenmethod: GETdata:appid: wx74a8627810cfa308secret: e40a02f9d79a8097df497e6aaf93ab81grant_type:validate: None
YAML数据驱动实现:

注:记得安装 PyYAML

# -*- coding: utf-8 -*-
import json
import allure
import pytest
import requests
import yaml# 读取 yaml 文件
def read_yaml(path):with open(path,mode="r",encoding="utf-8") as f:value = yaml.load(f,Loader=yaml.FullLoader)return value@allure.epic("项目名称:接口自动化测试")
@allure.feature("模块名称:用户模块")
class TestUser:@allure.story("接口名称:获取用户token")@allure.severity(allure.severity_level.BLOCKER)@pytest.mark.user@pytest.mark.parametrize("case_info",read_yaml("./testcases/user_manage/get_token.yml"))def test_get_user_token(self,case_info):print(case_info)allure.dynamic.title(case_info['name'])allure.dynamic.description(case_info['description'])allure.attach(body=case_info['request']['url'],name="请求地址:",attachment_type=allure.attachment_type.TEXT)allure.attach(body=case_info['request']["method"],name="请求方式:",attachment_type=allure.attachment_type.TEXT)data = case_info['request']["data"]allure.attach(body=json.dumps(data),name="请求数据:",attachment_type=allure.attachment_type.TEXT)rep = requests.get(url=case_info['request']['url'],params=data)allure.attach(body=str(rep.status_code) + rep.text,name="响应数据:",attachment_type=allure.attachment_type.TEXT)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/pingmian/82304.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DDoS防护实战——从基础配置到高防IP部署

一、基础防护:服务器与网络层加固 Linux内核优化: 调整TCP协议栈参数,缓解SYN Flood攻击: # 启用SYN Cookie并减少超时时间 echo 1 > /proc/sys/net/ipv4/tcp_syncookies echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout…

华为云Flexus+DeepSeek征文|Flexus云服务器Dify-LLM资源部署极致体验Agent

前引:重磅来袭!本次以DeepSeek-V3/R1商用大模型和Dify-LLM应用平台一键部署为核心,专为新手打造“开箱即用”的AI开发体验。无论你是想快速搭建企业级AI应用,还是探索大模型落地的无限可能,只需跟随小编实现三步走&…

SQLAlchemy 2.0 查询使用指南

SQLAlchemy 2.0 查询使用指南 1. 环境设置 首先,需要安装 SQLAlchemy 2.0 版本。假设你使用的是 SQLite 数据库,可以通过以下命令安装 SQLAlchemy: pip install sqlalchemy接着,我们创建数据库连接并初始化会话: f…

Windows 使用 WSL 安装 Ubuntu

一,前言 Windows 上轻松跑 Linux 又不想用笨重的VMware 和VirtualBox ,怎么办? 开源项目 Windows Subsystem for Linux (WSL)。它解决了许多开发者在 Windows 和 Linux 间切换的痛点,实现在 Windows 上无缝跑 Linux 工具和命令。…

[Excel VBA]如何製作買三送一優惠條件的POS結帳介面?

Excel I VBA I 買三送一優惠條件的POS結帳機 因應商品特賣活動,結帳介面需整合特定優惠條件,如買三送一,買五送二等等優惠條件。本文封面影片以買三送一為範例,並搭配VBA和對應按鈕,而實現銷售訂單紀錄和即時更新庫存等…

3d世界坐标系转屏幕坐标系

世界坐标 ——> NDC标准设备坐标 ——> 屏幕坐标 标准设备NDC坐标系 屏幕坐标系 .project方法将 将向量(坐标)从世界空间投影到相机的标准化设备坐标 (NDC) 空间。 手动实现HTML元素定位到模型位置,实现模型标签效果(和css2Render原理同理&#…

Idea出现 100% classes 等

总是误点出来,每次又忘了怎么消除,在这里记录一下。 出现这样: 操作idea界面的:点击View->Tool Windows ->Coverage,然后关掉

从零开始学习QT——第一步

一、Qt 1.1、Qt是什么 Qt是一个跨平台的C图形用户界面应用程序框架。它为应用程序开发者提供建立图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。 1.2、Qt的发展历程 1991年 Qt最早由芬兰奇趣科技开发 1996年 进入商业…

MySQL 8.0 OCP 1Z0-908 171-180题

Q171.Examine this MySQL client command to connect to a remote database: mysql-h remote-example.org-u root–protocolTCP–ssl-mode Which two–ss1-mode values will ensure that an X.509-compliant certificate will be used to establish the SSL/TLS connection to …

【机器学习】 关于外插修正随机梯度方法的数值实验

1. 随机梯度下降(SGD) 迭代格式: x k 1 x k − η k ∇ f i ( x k ) x_{k1} x_k - \eta_k \nabla f_i(x_k) xk1​xk​−ηk​∇fi​(xk​) 其中, η k \eta_k ηk​ 为步长(可能递减), ∇ f…

每日c/c++题 备战蓝桥杯(洛谷P3382 三分法求极值详解)

洛谷P3382 三分法求极值详解 题目描述 P3382 三分法 要求在给定区间内寻找一个多项式函数的最大值点。题目保证函数在区间内先严格递增后严格递减(单峰函数),适合使用三分法求解。 算法原理 三分法核心思想 对于单峰函数,在区…

[Windows] 一键实现重复工作自动化zTasker

zTasker,是一款定时|热键|纯粹的自动化任务神器。它支持超过100种任务类型,包括提醒、关机重启、报时、挡屏休息、文件备份、音量调节、静音等。用户可以通过定时、CPU占用、文件夹监控、网速、快捷键等多种条件触发任务。 简单点…

Docker核心笔记

一、概述 1、架构 Docker容器基于镜像运行,容器共享宿主机的内核,不会加载额外内核,通过Namespaces(环境隔离)和Cgroups(资源控制)实现隔离,Cgroups会限容器使用资源并控制优先级和统计数据。隔离后的容器仅包含应用所需的用户态依赖 2、安装 安装先卸载再安装,使用的yum…

2025年电工杯数学建模B题【垃圾运输】原创论文分享

大家好呀,从发布赛题一直到现在,总算完成了2025年电工杯数学建模B题【垃圾运输】完整的成品论文。 给大家看一下目录吧: 目录 摘 要: 一、问题重述 二.问题分析 2.1问题一 2.2问题二 2.3问题三 三、模型假设 …

[爬虫知识] IP代理

相关实战案例:[爬虫实战] 代理爬取:小白也能看懂怎么用代理 相关爬虫专栏:JS逆向爬虫实战 爬虫知识点合集 爬虫实战案例 引言:爬虫与IP封锁的攻防战 对网络爬虫而言,遇到的一个较棘手的问题就是封IP:请…

计算机视觉---YOLOv1

YOLOv1深度解析:单阶段目标检测的开山之作 一、YOLOv1概述 提出背景: 2016年由Joseph Redmon等人提出,全称"You Only Look Once",首次将目标检测视为回归问题,开创单阶段(One-Stage&#xff09…

前端学习笔记element-Plus

【element-plus菜单】参数说明: active-text-color"#ffd04b"——激活颜色 background-color"#232323"——背景颜色(29,160,176) :default-active"$route.path"——配置默认高亮的菜单项 text-color"#f…

【Django DRF】一篇文章总结Django DRF框架

第一章 DRF框架基础 1.1 DRF简介 1.1.1 DRF定义与作用 1. 定义 DRF 即 Django REST framework,它是一个建立在 Django 基础之上的强大且灵活的工具包,用于构建 Web API(应用程序编程接口)😎。简单来说,…

如何解决 Python 项目安装依赖报错:ERROR: Failed to build installable wheels for some pyproject.toml based project

如何解决 Python 项目安装依赖报错:ERROR: Failed to build installable wheels for some pyproject.toml based projects 在使用 pip 安装 Python 项目的依赖时,遇到类似如下的报错信息: ERROR: Failed to build installable wheels for s…

使用f5-tts训练自己的模型笔记

摘要 服务器都有了,这不得练练丹,有点说不过去啊。所以尝试了从头开始训练一个模型,结果由于推理页面好像有bug,不知道是不是失败了,然后又尝试微调一下模型。本篇文章主要记录了三流调包侠尝试炼丹过程中学习到的一些…