框架简介
选用python 3语言,使用库requests、unittest、HTMLTestRunner实现。测试用到的接口参数的数据是写在代码中的,没有用EXCEL(尝试过,当有几十个参数时看着太头疼)。这是根据工作中实际的接口测试项目,自己摸索一段时间后写的,不通用,比较简单。
API接口
项目实现的接口是提供给第三方调用的。介绍一下API接口的调用,申请到app_key和 app_secret,请求地址为:服务器地址/业务地址,公共必填参数(随机数nonce除外,附在请求的body内)附在URL地址上请求。
sign是对请求参数签名,签名方法如下:
1. 指定一种签名方式:encry_method=md5,sha256,sha1,sha3_256
2.计算nonce: md5(ts)
3. 获取到app_key,app_secret,ts,按如下规则:sign = $encry_method("nonce"+nonce+"ts"+ts+"app_key"+app_key+"app_secret"+secret ) 即生成字符串的哈希值
接口参数用form表单形式提交
二次封装requests
将发送请求中不变的部分如签名,公共参数等封装为类configHttp里面通用的部分,变化的地方就在设置请求URL和请求参数。
初始化类,从常量文件const_sign中获取常量
创建了defaultData这个类来存每个接口的默认参数,参数是用的字典类型表示,参数名称是key,value是存的列表:[参数取值,参数是否必填,参数是否是文件(F表示文件,P表示非文件)]
类configHttp的set_data函数将文件参数和非文件参数区分了出来
类configHttp的post函数处理了文件参数(包括一个参数有多个文件路径,用列表存),从路径中读取文件内容后关闭文件
创建测试用例
单接口测试:一个接口创建一个类,取默认参数,有变化的参数值更新后传值发送。
多接口业务联调:将能通用的业务抽取出来封装后使用。
同一参数不同取值或校验必填参数,创建子用例subTest:
日志
WriteLog是封装的日志模块,有存储在本地的,也有输出到控制台显示的,测试报告是取的输出到控制台显示的内容。
测试报告
网上找的修改支持python3的HTMLTestRunner库,将该py文件放到python安装目录的Lib下使用。
结束语
在写这个代码前,网上搜索了一番,想找到修改一番可以直接拿来用的,比如HttpRunner 这一款面向HTTP(S) 协议的通用测试框架。尝试了后没找到切入点,就尝试自己先简单写写,看看会遇到哪些问题,之后再去学习研究这个通用测试框架。就好比一个武学初级菜鸟给他一把神器也发挥不出它的威力。