requests完成接口自动化

本次主要讲如何使用python中的requests库完成接口自动化测试,讲解的方法主要是get,post,put,delete,我将对比postman一一讲解
  • Get
request.get(url, params, kwargs)

百度网站举例:

import requests
res = requests.get('https://www.baidu.com/')  #获取到的res对象
print(res.text)     #获取网页的响应内容
res.text    #获取网页的响应内容
res.status_code   #状态码
res.encoding    #编码方式
res.json()    #json形式展示请求到的内容
上面代码的res的对象该如何理解呢?

我们可以理解为在该次get请求中获取到的所有的信息都包含在了res这个对象中,我们只需要使用其他的方法一条一条的按照规律把咱们想要的信息取出来就ok了
注意:
网站必须带着http或者https,举个错误的事例:
在这里插入图片描述

我们在对比一下postman中get请求

在这里插入图片描述
其中响应内容就是我们用requests.text中获取到的内容一致
这时大家可能会有疑问,为什么我见到的url地址为啥那么长,那到底是为啥捏,比如:

https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E5%A4%A9%E6%B0%94&fenlei=256&rsv_pq=b1744de80006b207&rsv_t=a639bfAHWMurw1IqGUSMPnOaVTog5aqp24%2FYiC4NUDXtN39LkoERrWa2nxQ&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_sug3=8&rsv_sug1=7&rsv_sug7=101&rsv_sug2=0&rsv_btype=i&inputT=1238&rsv_sug4=4018

其实,get请求传参都是已拼接字符串的形式进行传递就是?后的值,都是xx=xx的形式,那些看不懂的就是已一定的形式进行了加密,那我们代码如何实现呢?

对比postman,大家就都理解了

在这里插入图片描述
带参数的请求方式我们可以使用在这里插入图片描述
参数必须使用字典格式,举例:

import requests
params = {
    'name':'Tom',
    'age':18
}
res = requests.get('https://www.baidu.com', params=params)
print(res.url)

在这里插入图片描述
此时我们可以看到请求的参数被拼接到了url之后,这时就达到了我们的目的

  • Post
requests.post(url, data, json, kwargs)

post请求比get请求多了一种传递参数的方式那就是把参数放在请求体中,那么Postman中在什么位置呢?
在这里插入图片描述
postman也提供了诸多方式传递,那么我们讲一下如何在请求体中传递参数。
在这里插入图片描述
那么data和json又有什么区别呢?

data要发送到请求体中的字典、元祖、字节、或文件对象
json要发送到请求体中的json数据

因为没有现成的接口,我只将一下用法
具体用法:

import requests
url ='https://www.baidu.com/'
data = {
    "sessionId": 'sessionid',
    "queryText": '111'
}
res = requests.post(url=url,data=data)

此时的data数据类型为data,虽然看上去与json格式相同,但本质是不同的。
错误案例:

import requests
url ='https://www.baidu.com/'
data = {
    "sessionId": 'sessionid',
    "queryText": '111'
}
res = requests.post(url=url,json=data)   #会报错 会报错   会报错

那么我们如何规避掉这个情况呢?我们需要把数据手动转化为json格式

import requests
import json

url ='https://www.baidu.com/'
data = {
    "sessionId": 'sessionid',
    "queryText": '111'
}
data = json.dumps(data)   #把数据转化为json格式
res = requests.post(url=url,data=data)

此时我们就可以使用data替代post方法中的参数json,这样即使是我们用data也可以传json数据
在这里插入图片描述

  • Put
requests.post(url, data,  kwargs)

put使用方法与post使用方法无二,参考post方法,不在具体说明

  • Delete
requests.post(url, kwargs)

使用delete方法删除url后,获取状态码为204表示删除成功。

当然工作中会把代码进行封装
import requests
import json


class Runmain(object):
    def m_get(self, url, data=None):
        res = requests.get(url=url, params=data)
        return json.dumps(res.text)

    def m_post(self, url, data=None):
        res = requests.post(url=url, data=data)
        return json.dumps(res.text)

    def is_run(self, method, url, data=None):
        if method == 'get':
            return self.m_get(url, data)
        else:
            return self.m_post(url, data)


if __name__ == '__main__':

    url = 'https://www.baidu.com/'
    data = {

        }
    run = Runmain()
    print(run.is_run('get', url))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值