常见工具框架
Postman newman git/svn jenkins
Jmeter Ant Git/svn jenkins
一、既然我们有这些的接口测试工具,为什么要做接口做自动化?
1、敏捷开发,接口一般数量很大,团队实现接口测试,版本控制
2、功能太死板,有些接口完全无法实现(复杂的加密接口,签名接口等)
3、接口项目当中有多种不同协议的接口
4、排措,定位接口问题不方便,结合抓包实现
5、没有办法生成美观的报告
6、多接口串联,数驷库验证,日志监控
7、有些公司做web自动化 接口自动化
二、python requests模块
requests第三方库,主要用于发送http请求,做接口自动化
pip install requests
三、requests全局观
请求
1、requests.get() 发送get请求
2、requests.post() 发送post请求
3、requests.delete() 发送delete请求
4、requests.put() 发送put请求
5、requests.request() 最核心的方法
响应 response 对象
代码语言:javascript复制import requests
rep = requests.request()
#返回字符串的数据
print(rep.text)
#返回字节格式的数据
print(rep.content)
#返回字 典格式的数据
print(rep.json())
#状态码
print(rep.status_code)
#返回状态信息
print(rep.reason)
#要返回cookie信息
print(rep.cookies)
#返回编码格式
print(rep.encoding)
#返回响应头信息
print(rep.headers)
四、接口实战
请求方式: get post delete put
请求参数类型:键值对, JSON格式,文件格式。
pip install pytest
pyest默认规则:
1、py文件必须以_test开头或者test_结尾
2、类名必须以Test开头
3、测试用例心须以test_开头
注意:
get请求通过params传递参数
post请求通过json或data传参。他们的区别是什么?文件通过files传参
代码语言:javascript复制data
数据报文: dict字典类型.那么默认情况下请求头: application/x-www-form-urlencoded。表示以form表单的方式传参。
格式: a=185&b=28&c=3
数据报文:str类型,默认情况下text/ptain(如果是dict格式需要转换成str格式)
json
不管dict还是str类型,默认都是application/json,格式:{"a": 1, "b": 2}
json.dumps(data) 序列化 把dict格式的数据转换str格式
json.lads(ata) 反序列化 把str格式的数据转换成dict格式
总结:
data只能传简单的只有键值对的dict或者是str格式。json一般只能传dict格式(简单和嵌套都可以)
cookie鉴权 网页的接口基本上都要做cookie鉴权,这种不常用
通过session实现cookie鉴权,这种很常用
五、接口自动化框架封装
接口自动化框架封装的第一步,统一请求方式
requests.request()
session 会话
代码语言:javascript复制session = request.session() # 全局变量
def get_session(self):
session = request.session()
return session