news 2026/7/10 23:00:38

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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)还有一些复杂的场景可能会根据接口入参,根据业务逻辑自己写脚本去获得预期结果,然后和接口输出做验证。

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/8 11:57:56

视觉AI提示词设计:从困惑到精通的实战指南

视觉AI提示词设计:从困惑到精通的实战指南 【免费下载链接】awesome-prompts 项目地址: https://gitcode.com/GitHub_Trending/aw/awesome-prompts 你是否曾经面对AI视觉模型感到束手无策?明明图像清晰可见,模型却给出令人啼笑皆非的…

作者头像 李华
网站建设 2026/7/10 6:04:26

wangEditor导入微信公众号内容自动排版CMS

企业网站Word粘贴及导入功能开发方案 背景与需求分析 作为广东某软件公司的前端工程师,我负责在企业网站后台管理系统中实现Word粘贴和文档导入功能。客户主要诉求如下: Word粘贴功能:直接从Word复制内容粘贴到网站编辑器,保留…

作者头像 李华
网站建设 2026/7/8 4:56:59

5个步骤:Open GApps完整安装指南,快速定制你的Android系统

5个步骤:Open GApps完整安装指南,快速定制你的Android系统 【免费下载链接】opengapps The main repository of the Open GApps Project 项目地址: https://gitcode.com/gh_mirrors/op/opengapps Open GApps是一个开源项目,专门为Andr…

作者头像 李华
网站建设 2026/7/10 7:48:55

软件测试(2):白盒测试

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 概念与定义白盒测试:侧重于系统或部件内部机制的测试,类型分为分支测试(判定节点测试)、路径测试、语句测试。控…

作者头像 李华
网站建设 2026/7/7 10:30:55

ComfyUI与Auto1111 WebUI对比:谁更适合你的项目?

ComfyUI与Auto1111 WebUI对比:谁更适合你的项目? 在AI图像生成技术日益普及的今天,本地部署Stable Diffusion已不再是极客专属。越来越多的设计团队、独立开发者甚至中小企业开始构建自己的生成流程。但当需求从“试一试”转向“稳定产出”&a…

作者头像 李华
网站建设 2026/7/10 18:08:57

终极指南:VQ-Diffusion高效图像生成模型完全解析

终极指南:VQ-Diffusion高效图像生成模型完全解析 【免费下载链接】VQ-Diffusion Official implementation of VQ-Diffusion 项目地址: https://gitcode.com/gh_mirrors/vq/VQ-Diffusion VQ-Diffusion是微软研究院推出的革命性图像生成模型,它巧妙…

作者头像 李华