Python+Requests模拟发送post请求

 🔥 交流讨论:欢迎加入我们一起学习!

🔥 资源分享耗时200+小时精选的「软件测试」资料包

🔥 教程推荐:火遍全网的《软件测试》教程  

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

模拟发送post请求

发送post请求的基础知识dumps和loads

代码示例:

# 发送post请求
import requests,json
# 发送post请求的基础知识dumps和loads
str_dict ={'name':'xiaoming','age':'20','sex':'男'}
print(type(str_dict))
str1 = json.dumps(str_dict)  # 1,json.dumps 是把字典、json对象转换为字符串
print(type(str1))
print(str1)

str2 = '{"name":"tom","age":"22","sex":"男"}'  # 注意 这里是字符串,里面必须用双引号
str_json = json.loads(str2)  # 2,json.loads 是将字符串转成字典,json对象
print(type(str_json))
print(str_json['name'],str_json.get('age'))
以微信开放平台举例

发送post请求

# 1,获取token
url = 'https://api.weixin.qq.com/cgi-bin/token'
data = {'grant_type':'client_credential',
        'appid':'wxf14419077f707',
        'secret':'92a113bd4b5ffdc72144740dc7123'}
response = requests.get(url=url,params=data)
# 响应是str类型 ,所以我们需要将响应转换成json
json_obj = response.json()
token = json_obj['access_token']
print(token)
# 2,新建用户标签
tag_url = 'https://api.weixin.qq.com/cgi-bin/tags/create'
tag_data = {'access_token':token}
tag_json_body = {"tag":{"name" :"长沙01"} }
headers = {"content-type":"application/json"}  # 发送json 数据必须带有头部信息 content-type
# post请求中body中的参数通过data,json 传递
# 如果body中的数据为json格式,在发送时可以直接使用json=body值
# response = requests.post(url=tag_url,params=tag_data,headers=headers,json=tag_json_body)
# 如果body中的数据为json格式,在发送时使用data=json.dumps(body值)
response = requests.post(url=tag_url,params=tag_data,headers=headers,data=json.dumps(tag_json_body))
print(response.content.decode("utf-8"))

查看执行结果:

 上传文件
import requests
# 1,获取token
url = 'https://api.weixin.qq.com/cgi-bin/token'
data = {'grant_type':'client_credential',
        'appid':'wxf14419077f707856',
        'secret':'92a113bd4b5ffdc72144740dc7123c99'}
response = requests.get(url=url,params=data)
# 响应是str类型 ,所以我们需要将响应转换成json
json_obj = response.json()
token = json_obj['access_token']
print(token)

# 上传文件
wx_url = "https://api.weixin.qq.com/cgi-bin/media/upload"
wx_data = {"access_token":token,"type":"image"}
file = {"files":open("E:/12345.png","rb")}  # 注意:必须要用字典的方式open
res = requests.post(url=wx_url,params=wx_data,files=file)
print(res.content.decode("utf-8"))

查看执行结果

 封装post请求

代码示例:

# 封装post方法
def send_post(url,data,json_info):
    headers = {"content-type": "application/json"}
    response = requests.post(url=url,params=data,json=json_info,headers=headers)
    return response

print(send_post(url=tag_url,data=tag_data,json_info=tag_json).content.decode("utf-8"))
封装main方法

代码示例:

# 封装main方法
def run_main(method,url,data=None,json_info=None):
    response = None
    if method == "GET":
        response = send_get(url,data)
    elif method == "POST":
        response = send_post(url,data,json_info)
    else:
        print("参数错误")
        response = None
    return response

print(run_main("GET","https://www.jd.com/").content.decode("utf-8"))
封装测试类

示例代码:

# 将写好的get、post、run_mian方法做成类
import requests
class run_test:
    session_obj = requests.session()
    def __init__(self,method,url,params=None,data=None,headers=None):
        self.method = method
        self.url = url
        self.params = params
        self.data = data
        self.headers = headers

    def send_get(self):
        res = run_test.session_obj.get(url=self.url,params=self.params,headers=self.headers)
        return res
    def send_post(self):
        res = run_test.session_obj.post(url=self.url,params=self.params,
                                        data=self.data,headers=self.headers)
        return res

    def run_main(self):
        if self.method == "GET":
            res = self.send_get()
        elif self.method == "POST":
            res = self.send_post()
        else:
            print("请求方式错误,请检查!")
            res = None
        return res


if __name__ == "__main__":
    method = "GET"
    url = "https://www.jd.com"
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36"}

    test_obj = run_test(method=method,url=url,headers=headers)
    response = test_obj.run_main()
    print(response.content.decode("utf-8"))

最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!

  • 24
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Pythonrequests库是一个非常强大的用于发送HTTP请求的库。在接口自动化测试中,使用requests库可以轻松地模拟发送各种类型的HTTP请求,例如GET、POST、PUT、DELETE等。 首先,我们需要在Python环境中安装requests库,可以使用pip命令进行安装。安装完成后,在测试脚本中引入requests库。 使用requests发送GET请求非常简单,只需要调用requests库的get()方法,并传入接口的URL即可。可以通过返回的响应对象来获取接口的响应内容、状态码等信息。 如果需要发送POST请求,可以调用requests库的post()方法,并传入接口的URL和请求参数。请求参数可以通过字典形式传递,也可以通过json.dumps()方法将字典转换为JSON格式传递。 在接口测试中,还可以使用requests库设置请求头信息、传递cookies、设置超时时间等。可以通过调用requests库的headers、cookies、timeout等属性来实现。 另外,requests库还可以非常方便地处理接口的返回结果。可以使用json()方法将返回的JSON格式响应内容转换为字典形式,方便后续对返回结果进行断言或其他处理。 总之,Pythonrequests库是一个十分强大且易于使用的接口自动化测试工具。它提供了丰富的功能和灵活的接口,能够满足大部分接口自动化测试的需求。 ### 回答2: Python requests库是一个用来发送HTTP请求的库,可以用于接口自动化测试。通过使用requests库,可以方便地发送GET、POST、PUT、DELETE等常见的HTTP请求,同时也能处理接收到的响应数据。 对于接口自动化测试来说,requests库具有很多优点。首先,它非常简单易用,不需要过多的配置和繁琐的代码,只需要import requests就可以开始使用。其次,requests库提供了丰富的方法和参数,可以满足多种接口测试的需求,比如发送带参数、Headers、cookies等的请求,也可以指定超时时间、Session等。另外,requests库还提供了简洁的响应处理方式,可以轻松地获取响应的状态码、头部信息、响应内容等。最后,requests库具有很好的可扩展性,可以与其他库和工具结合使用,比如结合unittest或pytest等测试框架,实现更加灵活和高效的接口测试。 使用requests库进行接口自动化测试的步骤大致如下:首先导入requests库,然后通过requests.get()或requests.post()等方法发送请求,可以根据需要传入参数、Headers、cookies等。接着,可以使用response对象获取响应状态码、头部信息、响应内容等。最后根据接口返回的数据进行断言,验证接口的正确性。 总之,使用Pythonrequests库进行接口自动化测试,可以简化测试流程、提高工作效率,是一种非常实用的方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值