首页 > 编程语言 >浅谈Python+requests+pytest接口自动化测试框架的搭建

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

时间:2024-12-11 17:32:42浏览次数:5  
标签:文件 需要 浅谈 Python py 接口 pytest 测试 test

框架的设计思路
首先要明确进行接口自动化需要的步骤,如下图所示:

 

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

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

最后如果你想学习自动化测试,欢迎加入笔者的交流群:785128166,里面会有很多资源和大佬答疑解惑,我们一起交流一起学习!

标签:文件,需要,浅谈,Python,py,接口,pytest,测试,test
From: https://www.cnblogs.com/hebendexiaomao/p/18600078

相关文章

  • Python使用Selenium库获取 网页节点元素、名称、内容的方法
    我们要用到一些网页源码信息,例如获取一些节点的class内容,除了使用Beautifulsoup来解析,还可以直接用Selenium库打印节点(元素)名称,用来获取元素的文本内容或者标签名。例如获取下面的class的内容:以下是几种常用的方法:1.获取元素的属性值:使用元素的.get_attribute('attri......
  • 记录一种校验方式-crc16(python+C语言)
    此篇文章在2023年3月24日被记录最近在写boot升级代码时,需要上位机发送固件包到下位机,因为固件包太大,因此需要分包发送,分包发送涉及到校验问题,特意对crc16校验方法进行记录计算方法预置1个16位的寄存器为十六进制FFFF(即全为1,我称为种子);称此寄存器为CRC寄存器;把第一个8位二......
  • 计算机毕业设计必看必学!90676,基于协同过滤推荐的流媒体电影推荐系统~原创定制程序单片
    基于协同过滤推荐的流媒体电影推荐系统摘 要本文介绍了一个基于Django的流媒体电影推荐系统的设计与实现。该系统旨在提供一个高效、个性化的电影推荐平台,满足用户对电影观看的需求。通过收集用户的观影历史、喜好和评价等数据,系统使用协同过滤算法分析用户的行为模式,并......
  • 计算机毕业设计必看必学!!42576,djangoNBA球员数据可视化系统LW原创定制程序单片机,java
    摘 要在当今的数字化时代,数据可视化已经成为分析和理解复杂数据的重要手段。对于NBA球员数据来说,可视化能够更直观地展示球员的表现、统计信息以及比赛趋势,为球队管理、球迷分析和媒体报道等提供有力支持。本系统旨在通过Django框架Python技术,构建一个NBA球员数据可......
  • 理论+实操(全文python代码)—— 01 详解RFM模型,让你知道你咋被大数据杀熟的。
    大家好,我是摇光~,用大白话讲解所有你难懂的知识点最近在和同事讨论大数据杀熟,其实就是网络上说的,你在网络上没有秘密~很多企业都用上了数据分析,为客户归类,再对你们进行大数据杀熟!!今天我们就来破解一下这个大数据杀熟的一种模型——RFM模型。接下来我将从理论到实操,来给......
  • python脚本转exe可执行格式
    首先写好一个脚本,如果是用的conda管理虚拟环境,需要在terminal中切换到特定的conda环境以运行Python脚本和进行打包的步骤,否则可能就会提示某些依赖不存在1.使用以下命令查看当前的conda环境列表:condaenvlist2.切换到目标环境假设你的环境名为wf,你......
  • 利用Python爬虫抓取消费者投诉数据:投诉内容与解决方案的抓取与分析
    一、引言随着电商和互联网平台的普及,消费者投诉平台逐渐成为消费者反馈产品和服务质量问题的重要渠道。消费者投诉数据不仅对企业改进产品和服务至关重要,同时也为消费者提供了更多的选择信息。通过抓取和分析这些投诉数据,我们可以了解消费者对产品或服务的具体问题、企业解决......
  • 【python脚本】python读取csv文件发送数据到kafka,然后再从kafka消费到mysql中
    前置条件pipinstallpandasconfluent-kafkamysql-connector-pythonpymysql读取csv文件到kafkaimportpandasaspdfromconfluent_kafkaimportProducerimportjsonimportcsv#配置Kafka生产者#topic名称csv_topickafka_topic='csv_topic'kafka_broker=......
  • 【计算机毕设选题推荐】基于python的健身房管理系统的设计与实现 【附源码+讲解+部署
    ✍✍计算机毕设编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......
  • 基于PyTorch/MXNet的高效中文/英文场景文字检测Python3包设计源码-Z5yUlJls
    基于PyTorch/MXNet的高效中文/英文场景文字检测Python3包设计源码地址CnSTD是一个高效的中文/英文场景文字检测Python3包,基于PyTorch/MXNet框架开发。该项目包含106个文件,主要为Python源码文件(63个.py),以及多种格式的资源文件,包括22个JPG图片、6个PNG图片、3个Makefile、3个YAML配......