自动化测试要满足四个条件:
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\'])