python+requests接口测试

python也可以进行接口测试,并且比工具更加灵活多变,借助第三方库requests,下载方式:cmd终端输入 pip install requests

接口请求方式存在多种,get,post,put,delete等,目前企业中用的最多的为get及post请求,我们这里也主要介绍如何使用python+requests进行post和get请求:

Get请求

import requests

apiurl="http://39.107.96.138:3000/api/v1/topics"
'''请求接口'''
输入参数
resonse=requests.get(url=apiurl)
print(resonse.status_code)
# response.content          ---响应值(数据流类型)
# response.text            ---响应值(字符串类型)
# response.json()          ---响应值(字典类型,只能是接口才能这个方法)
# print(respone.content)
#response1.elapsed.total_seconds()    ----获取接口耗

以上可以看到一个简单的get请求,并未传入任何参数及请求头信息,以及列举了一些获取响应信息的代码。如果我们的接口需要传入参数以及请求头信息该怎么办:

resonse=requests.get(url=apiurl,params={"page":2,"limit":3},header={'Content-Type':'application/json'})

我们直接在请求后面的括号中进行参数的传递即可,具体详情可参考requests的文档介绍。

对于返回的数据,我们可以对其进行格式的变化,以便于我们进行使用及提取相关信息:

#json与字符串与字典的转换
import json
#字符串转换成字典类型
dict1=json.loads(string1)

#字典类型转换成json字符串(python无json数据类型,实际为str类型)
json1=json.dumps(dict1)

Post请求

res=requests.post('http://39.107.96.138:3000/api/v1/topics',
                  json={"accesstoken":"dhsfdretret","title":"心仪的小姐姐和别人跑了","tab":"share","content":"真的好难受啊"})
print(res.status_code)
if res.status_code == 200:
    print("新建成功")

else:
    print("失败")

实际我们看到只是请求方式进行了改变,一级传参的关键字变了一下,post中传参可以使用data=,也可以使用json=,具体情况具体使用,json=多只参数以json字符串格式进行传递,data=多用来进行字典格式传递,具体格式变换也可以使用json.loads()等方法进行变换,对返回来的数据进行判断断言,以确保我们用例的执行成功与否。

Cookies设置

我们都知道有些接口是需要cookie进行传递才可进行请求,那么我们不能每请求一次都需要进行收到获取页面的cookie,那么我们如何进行cookie的设置呢:------>>>requests.session()

sessions = requests.session()
res=sessions.post('http://39.107.96.138:3000/api/v1/topics',
                  json={"accesstoken":"dhsfdretret","title":"心仪的小姐姐和别人跑了","tab":"share","content":"真的好难受啊"})
print(res.status_code)

以上我们可以看到直接设置sessions,然后进行登录接口请求,里面的cookie会自动set到sessions中,后续直接使用sessions请求即可。

若无登录接口返回cookie,公司有自动的获取cookie接口,可以使用cookie自带的RequestsCookieJar()方法set值:

sessions = requests.session()
c = requests.cookies.RequestsCookieJar()
c.set('cookie_key1','cookie_value1')   # set获取的cookie值
c.set('cookie_key2','cookie_key2')    # # set获取的cookie值
sessions.cookies.update(c)       # 更新sessions
res=sessions.post('http://39.107.96.138:3000/api/v1/topics',
              json={"accesstoken":"dhsfdretret","title":"心仪的小姐姐和别人跑了","tab":"share","content":"真的好难受啊"})
print(res.status_code)

接口常见问题:

1,若接口存在重定向,如何查看重定向前的请求信息(requests自动处理重定向)?

response.history      #list类型
for i in response.history:
    print(i.url)
    print(i.status_code)
    print(i.heasers["Location"])     获取定向的地址
    
如何设置接口重定向不处理?
response = requests.get(url,allow_redirects=False)   #allow_redirects参数设置

2,url中带有中文编码转换?(requests请求时自动转换)

from urllib.parse import quote,unquote
a = '零基础Python自动化'
b = quote(a)     #编码
c = unquote(b)       #解码

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值