【2024软件测试面试必会技能】Requests(3):模拟发送post请求

模拟发送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':'**********','secret':'**********'}
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':'**********','secret':'**********'}
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 responseprint(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 = Noneif method == "GET":response = send_get(url,data)elif method == "POST":response = send_post(url,data,json_info)else:print("参数错误")response = Nonereturn responseprint(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 = methodself.url = urlself.params = paramsself.data = dataself.headers = headersdef send_get(self):res = run_test.session_obj.get(url=self.url,params=self.params,headers=self.headers)return resdef send_post(self):res = run_test.session_obj.post(url=self.url,params=self.params,data=self.data,headers=self.headers)return resdef run_main(self):if self.method == "GET":res = self.send_get()elif self.method == "POST":res = self.send_post()else:print("请求方式错误,请检查!")res = Nonereturn resif __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"))

  总结

如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们,加入方式在文章的最后面

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

​​​

​​​

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/479749.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【k近邻】 K-Nearest Neighbors算法原理及流程

【k近邻】 K-Nearest Neighbors算法原理及流程 【k近邻】 K-Nearest Neighbors算法距离度量选择与数据维度归一化 k近邻算法(K-Nearest Neighbors,简称KNN)是一种常用的监督学习算法,可以用于分类和回归问题。在OpenCV中&#xff…

java调摄像头和人脸比对

我需要做一个功能,就是网站页面调用摄像头截图。现在由于要用java,就得研究用java怎么调用摄像头。顺带玩了一下人脸比对,资料有点少。 效果 采用javacv实现,先加Maven引用,后面把下载的包再独立引用不用Maven了 …

如何使用安卓平板远程Ubuntu服务器通过VS Code远程开发

文章目录 1.ubuntu本地安装code-server2. 安装cpolar内网穿透3. 创建隧道映射本地端口4. 安卓平板测试访问5.固定域名公网地址6.结语 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 人工智能学习网站, 通俗易懂,风趣幽默,…

Linux搭建JavaEE环境

Linux搭建JavaEE环境 需要在 Linux 下进行 JavaEE 的开发,我们需要安装如下软件 JDKtomcatmysqlidea 安装JDK 安装步骤 首先去官网下载jdk的linux版本 下载地址:https://www.oracle.com/cn/java/technologies/downloads/ 1) mkdir /opt/jdk 2) 通过 …

【postgresql】ERROR: relation “data_screen.import_record_id_seq“ does not exist

创建表时候提示下面错误: ERROR: relation "data_screen.import_record_id_seq" does not exist 错误:关系“data_screen.import_record_id_seq”不存在 创建语句 CREATE TABLE "data_screen"."import_record" ("…

SpringBoot+Vue+MySQL:图书管理系统的技术革新

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

Laravel Reverb 强势降临:全新风潮,引领未来开发潮流!

终于有官方 Websocket package 了!!! Laravel Reverb !!! reverb.laravel.com/ Laravel Reverb的引入使得Laravel框架在实时通信方面更加强大和灵活,为开发者提供了更多的选择和可能性。通过利…

http前生今世

HTTP/0.9,仅支持GET方法,并且响应中没有HTTP头信息,只有文档内容。 HTTP/1.0增加了对POST方法、状态码、HTTP头信息等的支持,这一版本也是广泛应用的历史性版本。 HTTP/1.1引入了持久连接(Persistent Connections&…

【.NET Core】常见C#代码约定

【.NET Core】常见C#代码约定 文章目录 【.NET Core】常见C#代码约定一、概述二、代码预定的目标三、代码约束工具和分析器四、C#语言准则五、字符串约定5.1 使用字符串内插来连接短字符串5.2 插入大文本时,使用System.Text.StringBuilder对象 六、数组约定七、委托…

书生开源大模型训练营-第3讲笔记

5.Langchain和InternLM搭建知识库 5.1环境 还是一样,开发机中创建镜像,以及所需依赖 pip install modelscope1.9.5 pip install transformers4.35.2 pip install streamlit1.24.0 pip install sentencepiece0.1.99 pip install accelerate0.24.15.2模…

算法面试八股文『 模型详解篇 』

说在前面 这是本系列的第二篇博客,主要是整理了一些经典模型的原理和结构,面试有时候也会问到这些模型的细节,因此都是需要十分熟悉的。光看原理还不够,最好是能用代码试着复现,可以看看李沐老师深度学习的教材&#…

信钰证券|lpr下降对股市的影响?是利好还是利空?

lpr是借款市场报价利率,它的上调、下降对股市会发生一定的影响,那么,lpr下降对股市的影响?是利好仍是利空? lpr下降对股市是利好,因为,lpr下降意味着借款本钱削减,会推进实体经济的…