背景
用python代码编写接口测试用例的时候,需借用requests库来发送get/post请求完成对接口的http调用,本文汇总编写接口测试用例常用的一些方法。
接口测试
发起请求
1.带参数的get请求:
import requests
data = {'key1':'value1','key2':'value2'}
rs = requests.get('http://httpbin.org/get',params=data)
2.带参数的post请求
import requests
data = {'key1':'value1','key2':'value2'}
rs = requests.post('http://httpbin.org/post',data=data)
3.定制header信息:本地借助switchhost调试通过的接口调用,需要通过将host写入到header里面可达到外网访问的场景
import requests
headers={
'Host':'httpbin.org',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36',}
data = {'key1':'value1','key2':'value2'}
rs = requests.get(url='http://172.24.31.5/get',headers=headers,params=data,verify=False)
4.带登陆态访问链接:常用于接口测试用例,使用session成功的登录了某个网站,后续使用该session对象请求该网站的其他网页都会默认使用该session之前使用的cookie等参数
post_url = "http://httpbin.org/post/login" #登陆前的页面
headers = {"User-Agent": "Mozilla/5.0"}
session = requests.session() #实例化session
post_data = {"email": "username", "password": "password"} #登陆的用户名&密码
session.post(post_url, headers=headers, data=post_data) # 使用session发送post请求获取cookie保存到本地session中
url = "http://httpbin.org/post/profile" # 登录后的页面
response1 = session.get(url, headers=headers) # 使用session请求登录后的页面,此时不用走登陆注册页面
response2 = session.post(url, headers=headers) # 使用session请求登录后的页面,此时不用走登陆注册页面
5.allow_redirects=False:由于requests库会自动处理重定向请求,会导致获取不到重定向的URL,但有时部分接口需要获取重定向的URL,此时需设置allow_redirects=False,就可以获取重定向的地址t.headers['location']。
import requests
headers={
'Host':'httpbin.org',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.122 Safari/537.36',}
s = requests.session()
r = s.get('http://httpbin.org/post/profile',
headers=headers,
allow_redirects=True, #禁止重定向
verify=False)
new_url = r.headers["Location"] #获取location地址
print(new_url)
接口返回数据
1.rs.text # 以文本的方式显示响应数据
2.json.loads(rs.text) #通过json转码后,变成常见的接口返回数据{"code":0,"message":"success","data":[]}
3.rs.status_code # 响应的状态码,对应于200/3XX/5XX
注:文章涉及到的URL不是真实存在,实际使用需替换成真实的接口地址