python接口测试_python+requests接口测试

本文介绍了如何使用Python的requests库进行接口测试,包括GET和POST请求的实现,参数和请求头的传递,以及数据转换。同时讲解了如何设置和处理Cookie,以应对需要身份验证的接口。对于返回的数据,文章提到了响应状态码的检查以及数据格式的转换。
摘要由CSDN通过智能技术生成

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

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

Get请求

import requestsapiurl="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)       # 更新sessionsres=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,unquotea = '零基础Python自动化'b = quote(a)     #编码c = unquote(b)       #解码

2671a2d620110bcaf7c26e7453f59471.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值