基于python的自动化测试框架v2.0

本文介绍了基于Python的自动化测试框架v2.0的开发过程,包括使用requests库、CGI库实现前后端交互,以及如何随机生成接口参数、处理对象类型和缺失参数的测试用例。框架通过输入接口信息,自动生成测试用例并请求接口,适用于接口自动化测试。
摘要由CSDN通过智能技术生成

概要

之前做过一版自动化测试框架v1.0,1.0版本主要功能实现的是自动化读取excel中的url,参数,然后使用python中的get/post的方法自动请求接口,将结果再写入excel中。
但是后来发现一个问题:对于接口参数的类型判断这类用例数很多,但是又很基础,一般不牵涉到业务场景。
因此有个想法:是否能输入接口的参数后,自动生成关于类型判断和缺少必填项/非必填项的用例,然后再自动请求,写入结果。
所以这段时间消失就是去完善了之前的自动化测试框架,升级到了v2.0~

框架

v2.0还是基于python的requests库的,只是多了一个简单的前端页面和随机生成类型参数、缺少必填项/非必填项参数的业务逻辑。但是因为前后端需要交互,所以我这里用的是python自带的CGI库来实现。

实现思路

接下来说一下我的实现思路

  1. 首先确定传参的数据结构
    因为接口参数类型除了基本的数据类型外还有复杂一点的,类似object和数组。所以最初想到的是用dict来承载,但是在实现过程中发现,dict不可哈希,因此他的key不可以是dict类型,这样的话就没办法用嵌套dict实现object类型的参数了,最后确定使用tuple为参数的数据结构。
    params:
    ({‘name’:‘a’,‘type’:‘int’},{‘name’:‘b’,‘type’:‘string’},{‘name’:’’,‘type’:‘object’,‘object’😦{‘name’:’’,‘type’:’’,‘isRequired’:’’},{‘name’:’’,‘type’:’’,‘isRequired’:’’})})

  2. 随机生成各类型的参数:int string bool float 数组 object
    确定好参数的数据结构后,此时就基于业务分为随机生成各类型的参数和随机生成缺少必填项/非必填项的参数。
    随机生成各类型的参数的实现思路就是当在前端页面传入A的正确类型type A后,随机生成除type A外的其他type的A的值。其他参数的类型正确,但是值也是随机的。
    这里就封装了一个小方法,因为python中没有switch方法,所以自定义了一个方法来实现生成对应类型的随机值。部分代码如下:
    在这里插入图片描述
    然后再嵌套for循环,生成对应的类型值。
    这里有点绕的就是需要分为对象类型和非对象类型的参数。对于对象类型的参数,需要把对象内的参数单独再for循环,在这里会麻烦一些,相较于非对象类型的参数。部分代码如下:
    在这里插入图片描述

  3. 随机生成缺少某个参数
    这部分的业务逻辑比较简单,只要将需要缺少的参数a给剔除掉,生成其他参数的正确类型值即可。较麻烦的也是在对象类型参数,需要对对象参数本身和对象参数内的参数都做处理。部分代码如下:
    在这里插入图片描述

  4. 生成测试用例
    随机生成参数,保存在param中后就可以循环读取该参数,将值写入excel,生成测试用例
    在这里插入图片描述

  5. 请求接口
    请求接口这部分可以使用v1.0中的代码。

  6. 页面
    到第五步差不多后台逻辑就已经完成了,接下来就是对外的前端页面。我写的前端页面很简陋,主要都是input输入框和select框的结合。可以自由输入接口名称、接口url、接口请求方式、参数名称和选择参数类型。

  7. CGI
    因之前学的后台框架是基于java的,对于Python中的前后端交互是从0开始学习了解的,因此就找了个比较简单的python自带的CGI库来实现交互。
    完整的CGI使用我这里不多做叙述了,因为自己也是学了皮毛,感兴趣的可以自行百度~
    CGI中获取表单的值使用的是form.getvalue()方法,传入的是元素的name值。
    然后就是服务器的搭建,本地使用的是http.server这个库,运行以下代码,就可以跑起来啦:
    port可以自定义,切勿端口占用
    在这里插入图片描述

  8. 运行server.py启动本地服务器,访问localhost:port,就可以访问页面,然后提交表单,生成用例,运行接口,生成结果啦。

总结

本篇写的比较简单,只是大致讲了一下自己的思路,但中间自己实现的时候还是遇到了许多坑的。可能是写代码的经验不足,有时候直接因为变量引用不正确,导致了死循环出来。。。。
再者就是CGI那一块还是踩了很多坑,前端页面也有某部分找了专业的前端开发者帮忙的。。。
但总体下来这个框架还是完成了,可以实现最基本的需求的。
但v2.0框架还是有些需要改进的点(基于工作的需要):
1、对于某些参数的值必须要是正确的,比如校验身份的参数。这类参数在其他参数随机生成的时候,必须保证值正确,不然就会返回身份验证不通过的结果,直接卡在了第一关,连参数校验都没有进行。。。
所以还得对这类需要固定值的参数进行特殊处理。
2、其他的点想到了再慢慢加吧~
最后,完整代码我也会附在资源中的!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值