python实现API接口自动化

框架简介

选用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) 协议的通用测试框架。尝试了后没找到切入点,就尝试自己先简单写写,看看会遇到哪些问题,之后再去学习研究这个通用测试框架。就好比一个武学初级菜鸟给他一把神器也发挥不出它的威力。

你可能感兴趣的:(python实现API接口自动化)