Python+Pytest+Allure搭建接口自动化测试框架

最近在用Python+Pytest+Allure搭建接口自动化测试框架

具体的框架要求:

1,使用Pytest进行测试用例编写和执行

2,使用Allure生成漂亮的测试报告

3,并且要求有断言方法

初步的框架设计如下,后期可以进一步添加很多功能

import pytest
import requests
import allure# 接口地址
BASE_URL = "https://www.xxx.com"# 示例接口函数
def get_user_info(user_id):url = f"{BASE_URL}/users/{user_id}"response = requests.get(url)return response.json()# 测试用例
@pytest.mark.parametrize("user_id", [1, 2, 3])
def test_get_user_info(user_id):with allure.step("调用接口获取用户信息"):user_info = get_user_info(user_id)with allure.step("断言用户信息"):assert user_info["id"] == user_id# Pytest的fixture,用于在测试用例执行前后进行一些操作
@pytest.fixture(scope="session")
def setup_allure():allure_dir = "allure-results"allure_report_dir = "allure-report"allure.clean_reports(allure_dir)allure.clean_results(allure_dir)allure.environment(report="true")yieldallure_cmd = f"allure generate {allure_dir} -o {allure_report_dir} --clean"allure_cmd += " && allure open --port 8080 allure-report"allure_cmd += " && allure serve allure-results"allure_cmd += " && allure report clean"allure_cmd += f" && rm -rf {allure_dir}"allure_cmd += f" && rm -rf {allure_report_dir}"allure_cmd += " && allure results clean"os.system(allure_cmd)# 执行测试
if __name__ == "__main__":pytest.main(['-s', '-v', '--alluredir=allure-results'])

在这个框架中,首先定义了一个基本的接口测试用例 test_get_user_info,用于测试 get_user_info 函数是否能够正确返回用户信息。

另外使用 pytest.mark.parametrize 装饰器来指定多个用户ID作为参数进行测试。在测试用例中,可以使用 allure.step 来定义测试步骤,以便在Allure报告中展示清晰的测试步骤。

此外,这个框架还定义了一个 setup_allure fixture,用于在测试执行前清理旧的Allure结果,并在测试执行后生成Allure报告,并使用Allure命令行工具打开报告或服务报告。

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

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

相关文章

Consul集群搭建看这篇就够了(consul cluster configuration )

Consul 是一种用于服务发现、配置和分布式一致性的开源工具和平台。它由 HashiCorp 公司开发和维护,旨在简化构建和维护分布式系统的任务。 Consul 提供了许多功能,包括: 服务发现:Consul允许服务注册和发现。当服务启动时&#…

《35岁,程序员的危机or转机?——深度剖析程序员职业发展之路》

一、引言 35岁,对于很多程序员来说是一个让人焦虑的年龄。在互联网行业,35岁往往被视为职业生涯的分水岭。许多程序员开始担心,随着年龄的增长,他们的职业发展是否会受到限制。这种担忧并非毫无根据。互联网行业瞬息万变,新技术层出不穷,对程序员的学习能力和适应能力提出了很高…

达梦查询text转换问题

bug:表字段为TEXT,数据返回页面时,打断点查看其为NClobProxyImpl对象 org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/quality].[dispatcherServlet] -Servlet.service() for servlet [dispatcherServlet] in context with …

【 C++ 】如何查看项目中使用的c++版本

如何查看项目中使用的c版本 std::cout << __cplusplus << std::endl;在项目任一位置&#xff0c;创建.cpp文件&#xff08; C/C Source.File&#xff09; main.cpp #include <iostream>int main() {std::cout << "Hello World!\n";std::co…

C++流插入、提取重载详解

内置类型支持流插入 自定义类型不支持流插入 注意&#xff1a;运算符重载如果有两个操作数的时候&#xff0c;第一个为左操作数&#xff0c;第二个为右操作数 而成员函数的第一个参数默认为this基类&#xff0c;而this参数又不能显式书写&#xff0c;所以没法改 也就是说第一个…

JAVA-----

标识符 标识符可以简单的理解为一个名字&#xff0c;在Java中&#xff0c;我们需要给代码中的很多元素起名字&#xff0c;包括类名、方法名、字段名、变量名等等。我们给对应元素起的名称就被叫做是标识符。一个正确的标识符需要遵循以下规则&#xff1a; 1.标识符可以由字母、…

PYTHON初级笔记1

0、python&#xff1f; 简单的编程语言 python环境搭建&#xff1a; ①、开发环境&#xff1a;vscode、sublime、pycharm...... ②、运行环境&#xff1a;cpython解释器 python如何写代码&#xff1f; ①、在终端上的命令行上写&#xff0c;可以是我们cmd的中终端&#xff0c;…

MATLAB 公共区域的点云合并(46)

MATLAB 公共区域的点云合并(46) 一、算法介绍二、算法实现1.代码2.效果一、算法介绍 点云配准后,或者公共区域存在多片点云对场景进行冗余过量表达时,我们需要将点云进行合并,Matlab点云工具中提供了这样的合并函数,通过指定网格步长,对初始点云进行过滤。 函数主要实…

分治——快速排序算法

例题一 解法&#xff08;快排思想 - 三指针法使数组分三块&#xff09;&#xff1a; 算法思路&#xff1a; 类⽐数组分两块的算法思想&#xff0c;这⾥是将数组分成三块&#xff0c;那么我们可以再添加⼀个指针&#xff0c;实现数组分 三块。 设数组⼤⼩为 n &#xff0c…

非计算机科班如何丝滑转码:规划、前景与行动建议

近年来&#xff0c;计算机领域因其广阔的应用前景和优厚的薪资待遇&#xff0c;吸引了众多非计算机科班出身的人士想要转行。然而&#xff0c;对于没有专业背景的他们来说&#xff0c;如何实现从其他行业到计算机领域的丝滑转码&#xff0c;确实是一个值得深思的问题。以下是我…

nextjs getServerSideProps 获取url中的参数

在 Next.js 中&#xff0c;可以使用 getServerSideProps 函数的上下文对象来获取 URL 中的参数。getServerSideProps 函数接收一个上下文对象&#xff08;通常命名为 context&#xff09;&#xff0c;其中包含了有关请求的信息&#xff0c;包括查询参数、路径参数等。 以下是一…

数据分析web可视化神器---streamlit框架,无需懂前端也能搭建出精美的web网站页面

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属的专栏&#xff1a;数据分析系统化教学&#xff0c;零基础到进阶实战 景天的主页&#xff1a;景天科技苑 文章目录 Streamlit什么是streamli…

Godot 学习笔记(5):国际化多语言翻译,包含常用10种语言机翻!

文章目录 前言国际化翻译Api选择小牛测试 语言选择代码逻辑实体对象翻译帮助类导出模板读取文件翻译测试多语言测试 综合翻译文件准备测试代码测试结果 完整代码实体类翻译帮助类网络帮助类 最终效果翻译前翻译中翻译后 总结 前言 为了面向更大的市场&#xff0c;国际化是肯定…

毫米波雷达简介

毫米波雷达简介 附赠自动驾驶学习资料和量产经验&#xff1a;链接 1. 概述 1.1 发展历史 RADAR是RAdio Detection And Ranging的缩写。 1936年1月&#xff0c;英国架起了第一个雷达站&#xff0c;用于监测德国战机。从此之后&#xff0c;雷达技术开始蓬勃发展。 雷达的频段很…

软件测试基础(1)

软件测试的生命周期 软件测试的生命周期: 需求分析 -> 测试计划 -> 测试设计, 测试开发 -> 测试执行 -> 测试评估. 软件测试 & 软件开发的生命周期 1.需求阶段 测试人员了解需求, 对需求进行分解, 得出测试需求. 2.计划阶段 根据需求编写测试计划/测试方案 3…

Web核心

目录 Web核心HTTP概念&#xff1a;协议特点&#xff1a;请求数据格式响应数据格式 Tomcat简介基本使用配置部署项目IDEA中创建 Maven Web 项目 IDEA使用Tomcat Servlet简介快速入门执行流程生命周期体系结构Servlet urlPattern配置一个Servlet&#xff0c;可以配置多个 urlPatt…

Java函数式编程-Stream流

Java函数式编程-Stream流 1.概述为什么学&#xff1f;函数式编程思想优点 2.Lambda表达式2.1概述2.2核心原则2.3 基本格式例一例二 2.4省略规则 3.Stream流概述3.2案例数据准备3.3快速入门3.3.1需求3.3.2实现 3.4常用操作3.4.1创建流3.4.2中间操作filtermapdistinctsortedlimit…

java-springboot实现图片的上传

我们在resources目录下创建image目录来存放上传的图片 service层懒的写&#xff0c;就都写controller层了。 RestController RequestMapping("/upload") public class upload {PostMapping("/pic")public String upLoad(RequestParam("multipartFile…

PTA金字塔游戏

幼儿园里真热闹&#xff0c;老师带着孩子们做一个名叫金字塔的游戏&#xff0c;游戏规则如下&#xff1a; 首先&#xff0c;老师把孩子们按身高从高到矮排列&#xff0c;选出最高的做队长&#xff0c;当金字塔的塔顶&#xff0c;之后在其余小朋友里选出两个最高的&#xff0c;…

12个好玩又实用的Python迭代器和生成器实例

大家好&#xff01;今天我们要来一场编程奇趣之旅&#xff0c;一起揭秘那些既让代码变得更简洁高效&#xff0c;又能带你领略Python魅力的12个迭代器和生成器实例。别担心&#xff0c;我会用轻松易懂的语言帮你掌握这些小技巧&#xff0c;准备好你的笔记本&#xff0c;咱们这就…