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

2022-08-09
关注

框架的设计思路

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

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

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

您觉得本篇内容如何
评分

相关产品

Honeywell 霍尼韦尔智能工业 在线/便携烟气分析仪专用传感器 气体传感器

CO 传感器;SO2传感器;NO2 传感器;NO传感器;氧气传感器

微著科技 高性能传感器ASIC解决方案 MEMS传感器

微著科技是国内为数不多能够给传感器厂商提供定制高性能传感器解决方案的团队,目前已为国内众多院所及知名传感器公司提供了十余个传感器解决方案并已经实现量产。微著传感器ASIC方案的特点:成熟的仪表信号模块IP易于快速搭建;系统方案超低噪声;成熟的24ADC可同时实现模拟数字传感器方案设计;高效率及丰富的方案设计经验。

南方泰科 TGM 压力传感器

TGM是一款SOP8封装的压阻式MEMS压力传感器,其压力传感器芯片封装在 SOP8 塑封壳内。在传感器压力量程内,当用固定电压供电时,传感器产生毫伏输出电压,正比于输入压力。压力传感器芯片为绝压,可提供不同的压力量程的SOP8 压力传感器。

鑫精诚传感器 XJC-T001 压力传感器

◆传感器激光焊接密封,环境适应性较强 ◆球形联接件,始终保持模块的垂直称重状态 ◆支撑螺栓,防止设备倾覆且方便维护 ◆接地装置,保护传感器免受电源浪涌冲击 ◆过载保护装置,保护传感器免受冲击力

Huba Control 富巴 525系列 压力传感器

525系列压力传感器采用集公司20多年研发经验的陶瓷压力传感器芯片技术。该系列压力传感器可选压力范围大,电气连接形式多。最小量程为50mbar。大批量使用具有很好的性价比。

Winsen 炜盛科技 MH-410D 红外CO2气体传感器 红外传感器

MH-410D红外气体传感器是通用型、智能型、微型传感器,该红外传感器利用非色散红外(NDIR)原理对空气中存在的CO2进行探测,具有很好的选择性,无氧气依赖性,性能稳定、寿命长。内置温度补偿。该红外传感器是通过将成熟的红外吸收气体检测技术与微型机械加工、精良电路设计紧密结合而制作出的小巧型高性能红外传感器。该红外传感器可广泛应用于暖通制冷与室内空气质量监控、工业过程及安全防护监控、农业及畜牧业生产过程监控。

佰测传感 MS71 传感器

MS71差压传感器

Cubic 四方光电 PM3009BP 室外粉尘传感器

PM3009BP是一款专门针对餐饮油烟监测的油烟传感器,其采用旁流采样方式,自带除水雾装置,结合智能颗粒物识别算法,确保传感器能够快速准确的检测油烟浓度的变化,同时创新的镜头自清洁技术的应用,能够长效防护传感器油烟污染,大幅度延长传感器的使用寿命。

评论

您需要登录才可以回复|注册

提交评论

广告

51CTO

这家伙很懒,什么描述也没留下

关注

点击进入下一篇

163页PPT带你认识温度传感器知识(齐全详细!)

提取码
复制提取码
点击跳转至百度网盘