python 接口请求碎碎念

背景

用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不是真实存在,实际使用需替换成真实的接口地址

你可能感兴趣的:(python 接口请求碎碎念)