Python+requests+pytest接口自动化测试框架的搭建

🍅点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

框架的设计思路

首先要明确进行接口自动化需要的步骤,如下图所示:

然后逐步拆解需要完成的工作:

1)了解分析需求:了解接口要实现的功能

2)数据准备:根据开发文档确定接口的基本情况,知晓接口的url、请求方式、入参等信息,然后根据业务逻辑以及入参来预期接口的输出

  • 需要有一个配置文件来存储接口的一些基本信息;
  • 需要有一个方法能读取配置文件;
  • 需要有一个excel或者yaml格式文件来存储测试数据;
  • 需要有一个方法能读取测试数据;
  • 需要有一个方法来把读取到的配置文件和测试数据组装成测试执行时需要的参数化数据;

如果预期结果是需要根据入参查数据库来得到的时候还需要一个能执行sql的方法

3)设计&执行测试:生成一个测试文件,可以来根据入参调用接口获得接口输出然后验证

  • 根据pytest的特性可以把准备参数化的数据的工作放到conftest.py下;
  • 需要有一个调用接口以及断言验证的测试文件,命名规则为xxx_test.py或者test_xxx.py;
  • 为了更好的对输出和预期输出做验证准备封装一下系统自带的断言;
  • 为了能更好执行测试封装一下requests模块,制定统一的输入输出标准;
  • 记录执行错误信息引入日志记录模块;

4)查看结果:根据断言结果来判定接口是否满足需求框架最终的执行顺序如下图所示

框架的基本结构

然后介绍一个每个目录下都有什么,分别完成什么工作

1、这里每一个文件对应一个接口所需要的测试数据,命名规则为nameA.xlsx或者nameA.yaml(nameA泛指待测接口名称),文件里面可以存放调用接口所需的参数name、参数value、所需cookie、预期输出结果

2、assertion.py

--封装的断言方法,用于验证接口返回值和预期结果是否一致

config.py

--封装读取配置文件的方法

get_caseparams.py

--把测试数据加工成接口所需要的格式

log.py

--封装的记录日志的方法

request.py

--封装的https请求方法,主要是post和get

selectDB.py

--查询sql并把结果加工成[dic1,dic2,dic3....]这种格式,每个dic是一条数据

testcasetemplate.py

--这个是根据caseparams文件夹下的测试数据自动在testcase文件夹下生成测试文件的脚本

3、里面存放两个配置文件,base.ini存放数据库连接的配置interface.ini是所有测试接口需要的配置。

4、记录测试的日志文件,没啥可说的,log.log是当天文件,其他的是对应日期下的历史日志。

5、conftest.py固定名称的一个文件,放在被测接口脚本同一个文件夹下,此处的作用是为每个被测脚本提供参数化支持 test_XXX.py这种文件是接口的测试文件,XXX为被测接口的名称。

6、run.py ---测试执行的主入口,如果把该接口自动化测试框架放到jenkins上做持续集成的时候,可以通过配置jenkins来代替这个入口

使用说明

当我们需要有一个接口(假定名称为abc)需要用本框架进行自动化测试的时候,操作步骤如下:

1、interface.ini文件下添加名称为abc的节点,然后在该节点下配置好接口的参数文件格式、http请求方式、接口url、接口wiki。

2、casefparams文件夹下创建名称为abc.xlsx的用例数据文件。

3、执行common文件夹下的testcasetemplate.py,执行的结果是会自动根据前两步配置的内容在casefile文件夹下生成test_abc.py的脚本文件。

4、编辑test_abc.py添加所需要的断言,来验证接口的准确性。

5、执行run.py完成测试。

测试执行详情为run.py指定要执行测试的测试文件的路径testcase目录,根据pytest的运行机制这之前会先调用testcase目录下的conftest.py,这个文件在此处的作用就是通过遍历testcase目录下以test_为开头的测试文件,然后调用读取配置文件config.py、读取并组装参数的get_caseparams.py将测试用例数据参数化传递给test_开头的测试文件,test_开头的测试文件执行的时候会把之前步骤传递过来的参数拆分,然后调用request.py发送http请求,获得接口的json格式的返回结果,然后通过以下方式对接口返回结果做验证。

1)根据产品业务逻辑知道入参的情况下很简单就能得出预期结果的时候,可以直接把预期结果放到和入参一起的excel或者yaml测试数据文件中,在执行测试的时候这些参数也会一并传递给测试文件,直接取出来和接口输出做验证即可。

2)需要查库验证的情况需要把需要把接口的入参作为sql的条件写好sql后调用selectDB.py得到查询结果再拿sql返回的结果和接口输出做验证3)还有一些复杂的场景可能会根据接口入参,根据业务逻辑自己写脚本去获得预期结果,然后和接口输出做验证。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

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

相关文章

CAIE人工智能认证价值全解析:你的未来择业秘笈

近年来,人工智能已从技术概念深度渗透至各行各业。全球企业对AI的投入持续增加,企业的AI使用率显著提升。在这一背景下,如何将AI能力转化为个人核心竞争力,成为许多从业者关注的话题。行业普遍认为,通过系统学习和专业…

如何让AI工作流真正理解你的业务场景?

如何让AI工作流真正理解你的业务场景? 【免费下载链接】FastGPT labring/FastGPT: FastGPT 是一个基于PyTorch实现的快速版GPT(Generative Pretrained Transformer)模型,可能是为了优化训练速度或资源占用而设计的一个实验性项目&…

29、软件国际化与配置指南

软件国际化与配置指南 1. 国际化概述 在当今互联网时代,软件的国际化变得至关重要。实现软件的多语言支持,能让软件在全球范围内更广泛地使用。下面将详细介绍软件国际化的相关内容,包括可翻译字符串的声明、翻译文件的构建、Unicode 字符处理以及配置信息的保存。 2. 可…

网络延迟优化实战指南:从问题诊断到性能提升的完整方案

网络延迟优化实战指南:从问题诊断到性能提升的完整方案 【免费下载链接】ohos_react_native React Native鸿蒙化仓库 项目地址: https://gitcode.com/openharmony-sig/ohos_react_native 网络延迟是影响应用响应速度和用户体验的关键因素。无论是日常使用还是…

SpaceCadetPinball开源项目终极指南:重温经典弹球游戏

SpaceCadetPinball开源项目终极指南:重温经典弹球游戏 【免费下载链接】SpaceCadetPinball Decompilation of 3D Pinball for Windows – Space Cadet 项目地址: https://gitcode.com/gh_mirrors/sp/SpaceCadetPinball SpaceCadetPinball是一个令人惊叹的开源…

课表管理系统终极指南:5个步骤打造高效教学安排

课表管理系统终极指南:5个步骤打造高效教学安排 【免费下载链接】course 项目地址: https://gitcode.com/gh_mirrors/course1/course 还在为复杂的课程安排而头疼吗?课表管理系统正是您需要的解决方案!这款基于Django框架开发的开源工…

ag-ui TypeScript SDK终极指南:构建类型安全的AI应用

ag-ui TypeScript SDK终极指南:构建类型安全的AI应用 【免费下载链接】ag-ui 项目地址: https://gitcode.com/gh_mirrors/agu/ag-ui 你是否曾经在开发AI应用时,因为类型错误而花费数小时调试?或者因为数据结构不匹配而导致整个应用崩…

仿写文章Prompt:NumberFlow SSR技术深度解析

仿写文章Prompt:NumberFlow SSR技术深度解析 【免费下载链接】number-flow An animated number component for React, Vue, and Svelte. 项目地址: https://gitcode.com/gh_mirrors/nu/number-flow 请基于NumberFlow项目的SSR功能,撰写一篇技术深…

CodeGeeX2多语言编程助手:从入门到精通的完整实战指南

CodeGeeX2多语言编程助手:从入门到精通的完整实战指南 【免费下载链接】CodeGeeX2 CodeGeeX2: A More Powerful Multilingual Code Generation Model 项目地址: https://gitcode.com/gh_mirrors/co/CodeGeeX2 在数字化教育快速发展的今天,CodeGee…

3、树莓派使用指南:从系统安装到音频配置

树莓派使用指南:从系统安装到音频配置 1. 系统镜像写入SD卡 在不同操作系统上,将Raspbian镜像写入SD卡的方法有所不同。 - Windows系统 : - 下载Win32 Disk Imager工具,下载地址为https://sourceforge.net/projects/win32diskimager/ ,当前版本是0.9.5,该工具无需安…

TinyMCE导入word图片自动压缩尺寸

深圳XX保险集团OA系统新闻模块升级项目实施记录 (基于信创环境的Vue2TinyMCESpringBoot集成方案) 一、项目背景与需求分析 现状梳理 集团OA系统新闻模块采用Vue2-cli前端框架,后端为SpringBoot 2.7.x,编辑器使用TinyMCE 5.x。当前…

如何快速配置Pcileech-DMA-NVMe-VMD:面向开发者的完整指南

Pcileech-DMA-NVMe-VMD是一款开源DMA工具,通过固件仿真技术实现NVMe-VMD功能,为开发者提供高效的数据传输解决方案。该项目完全免费开源,采用DMA直接内存访问技术,能够大幅提升数据传输效率。 【免费下载链接】Pcileech-DMA-NAMe-…

30、Qt 中的小部件介绍

Qt 中的小部件介绍 1. 小部件概述 在 Qt 里,小部件是包含可显示窗口的类。所有具有可显示窗口的类都从 QWidget 类继承窗口功能。下面将按字母顺序介绍各种小部件,涵盖其头文件、超类、子类、公共方法、槽、信号和枚举类型,还会给出示例程序。 2. 部分小部件详细介绍 2.…

用代码编织演示艺术:Spectacle让技术演讲焕然一新

用代码编织演示艺术:Spectacle让技术演讲焕然一新 【免费下载链接】spectacle A React-based library for creating sleek presentations using JSX syntax that gives you the ability to live demo your code. 项目地址: https://gitcode.com/gh_mirrors/specta…

7天轻松掌握Thinking-Claude:AI对话质量提升完全指南

7天轻松掌握Thinking-Claude:AI对话质量提升完全指南 【免费下载链接】Thinking-Claude Let your Claude able to think 项目地址: https://gitcode.com/gh_mirrors/th/Thinking-Claude 想要让Claude从简单的问答机器人变成你的专属思考伙伴吗?Th…

Lazarus调用COM组件MSCOMM之OLE方法

Lazarus 本身有MSCOMM类似的组件,只是将mscomm当成调用例子的道具。本来是在codetyphon上练的,它和Lazarus没什么特别的地方,而且开发团队韧性和支持能力相比Lazarus相差很多,就用Lazarus简单写一下ole调用过程吧。用OLE方式调用C…

如何快速掌握Fort Firewall:Windows网络安全管理完整指南

Fort Firewall是一款专为Windows系统设计的高性能防火墙解决方案,通过精细的应用过滤和网络管理功能,帮助用户构建安全的网络环境。本教程将从实战角度出发,带你系统学习这款工具的核心功能配置方法。 【免费下载链接】fort Fort Firewall fo…

JDK 1.8.0_201 终极下载与安装指南:快速搭建Java开发环境

JDK 1.8.0_201 终极下载与安装指南:快速搭建Java开发环境 【免费下载链接】JDK1.8.0_201资源下载 本仓库提供了 Java Development Kit (JDK) 1.8.0_201 版本的直接下载资源。JDK 是开发Java应用程序的必备工具包,它包括了Java运行环境(Java R…

5、音频操作技巧:从命令快捷方式到远程监听

音频操作技巧:从命令快捷方式到远程监听 在音频操作中,我们常常会遇到一些繁琐的步骤,比如反复输入冗长的命令。不过别担心,通过一些实用的工具和技巧,我们可以让音频操作变得更加高效和便捷。 1. 使用别名创建命令快捷方式 在使用 sox 命令进行音频录制时,反复输入…

U-2-Net农业应用指南:实现精准作物病虫害智能检测

U-2-Net农业应用指南:实现精准作物病虫害智能检测 【免费下载链接】U-2-Net U-2-Net - 用于显著对象检测的深度学习模型,具有嵌套的U型结构。 项目地址: https://gitcode.com/gh_mirrors/u2/U-2-Net 显著对象检测技术正在农业领域掀起革命&#x…