自动化测试要满足四个条件:
1 - 自动化用例能够完成所有测试步骤 -------- postman不支持 没有完整的用例管理系统
2 - 每个用例的输入数据,必须要自动填入 -------- postman支持
3 - 每个用例的结果检查,必须可以用代码自动完成 ------ postman支持
4 - 具备环境初始化和清除功能 ------ postman不支持 postman受到沙盒限制并不能任意引用第三方库
python语言也可以实现web api接口测试。主要是构造出相应的http请求。
* 内置库有 httplib urllib2
* 第三方库 urllib3 requests pyCurl
因此,要想进行接口自动化,我们就来了解下Request库。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
Requests库:第三方库,简单易用、功能强大,是python实现的最简单易用的HTTP库。
需要手动安装: pip install requests 提示successful即安装成功,模块requests就可以使用了 import requests
构建各种http请求:
requests.get(‘htpps://api.github.com/events‘) --------- http.get请求
requests.post(‘http://httpbin.org/post‘, data={‘key‘:‘value‘}) ----------- http.post请求
requests.put(‘http://httpbin.org/put‘, data={‘key‘:‘value‘}) ------------ http.put请求
requests.delete(‘http://httpbin.org/delete‘) ------------ http.delete请求
构建URL参数:
payload = {‘key1‘:‘value1‘, ‘key2‘:‘value2‘}
requests.get(‘http://httpbin.org/get‘, params=payload)
构建请求头:
只需要简单的传递一个字典给headers参数就可以了,如:
h = {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36....‘}
requests.get(url, headers=h, params=payload)
定制请求体:
① 请求体类型 Content-Type: application/x-www-form-urlencoded
只需要简单的穿衣一个字典给data参数就可以了,如:
payload1 = {‘action’: ‘add_course‘,
‘data‘:‘‘‘{
‘name‘:‘数学‘,
‘desc‘:‘数学课程‘,
‘display_idx‘: ‘4‘
}‘‘‘
}
resp = request.post(url, data=payload1)
② 请求体类型 Content-Type: application/json
可以将字典直接传递给json参数 如:
payload2 = {‘action’: ‘add_course‘, ‘data‘:{ ‘name‘:‘数学‘, ‘desc‘:‘数学课程‘, ‘display_idx‘: ‘4‘}}
resp = requests.post(url, json=payload2)
查看响应内容:
先获取到响应对象resp = requests.post(url, data=payload) 就可以查看服务器返回的各种消息内容
查看响应头 ----- resp.headers
查看响应体 ----- resp.text
如果响应体恰巧是json格式 resp.json() 自动把json格式的字符串转成python对象,通常都是字典类型。
那么再获取字典里面具体的值就好操作了。如:
retObj = resp.json()
if retObj[‘retcode‘] == 0:
print(‘pass‘)
else:
print(retObj[‘retcode‘])