Python 接口自动化 —— requests框架

1.前言

Python内置的urllib模块,也可以用于访问网络资源。但是,它用起来比较麻烦,而且,缺少很多实用的高级功能。因此我们使用 requests 模块进行进行接口测试。

requests官方文档资料地址:http://cn.python-requests.org/zh_CN/latest/

2.环境安装

cmd(win+R快捷键)输入:

 pip install requests -i https://pypi.douban.com/simple

提示以下信息表示安装成功。

3.requests发送请求

3.1 get请求无参数param

  1. 将安装好的requests模块导入后,通过GET访问一个URL地址的网页页面
  2. 这里的 r 也就是 response,请求后的返回值,可以调用 response 里的 status_code 方法查看状态码
  3. 状态码 200 只能说明接口请求发送成功了,并不能说明功能一定是 OK 的,一般要查看响应的内容,r.text 返回文本信
# -*- coding:utf-8 -*-# 导入 requests 模块
import requests
# 定义 url
url = 'http://www.cnblogs.com/wwho'
# 请求博客园
r = requests.get(url=url)
# 打印状态码
print(r.status_code)
# 打印文本
print(r.text)

3.2 get请求有参数param

url地址为:http://apis.juhe.cn/simpleWeather/query?city=深圳&key=xxx
参数:city=深圳&key=xxx

可以以字典的形式传参:
{"city": "深圳", "key": "xxx"}

多个参数格式:

 {"key1": "value1", "key2": "value2", "key3": "value3"}

(r.url获取当前url地址,可以检查是否传参成功)

代码:

# -*- coding:utf-8 -*-# 导入 requests 模块
import requests# 定义 url
url = 'http://apis.juhe.cn/simpleWeather/query'
par = {"city": "深圳","key": "4611a7abae4afe573fd7ca751d9d423a"}result = requests.get(url=url, params=par)
# 打印文本
print(result.text)

3.3定制请求头

一个完整的get请求,应该包括请求行(url) 和请求头(headers)、请求参数(params),
什么时候要加请求头呢,如果你不确定的话最好加上去。

3.4 response返回信息

response返回信息

-- r.status_code   # 响应状态码-- r.content   # 字节方式的响应体,会自动为你解码 gzip 和deflate 压缩-- r.headers  # 以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写,若键不存在则返回 None-- r.json()  # Requests 中内置的 JSON 解码器,requests的方便之处还在于,对于特定类型的响应,例如JSON,可以直接获取-- r.url  # 获取 url-- r.encoding  # 编码格式,requests自动检测编码-- r.cookies  # 获取 cookie-- r.raw  # 返回原始响应体-- r.text #字符串方式的响应体,会自动根据响应头部的字符编码进行解码-- r.raise_for_status()  # 失败请求(非 200 响应)抛出异常

以上就是requests模块主要的返回格式。

3.5 post请求

讲post请求之前 先讲一下 requests.session()
requests.session() 获取 requests的session对象,简单来说就相当于一个微型浏览器,能自动保持登录态。所以一般对于 cookie – session 保持登录态的系统就可以使用
requests.session()

使用方法:后续的请求都使用session即可

Post请求首先要注意的就是body的数据类型

常见的有四种类型,但是不止四种:

  1. 第一种:application/json: {“key1“:”value1”,“keyt2":“value2"}
  2. 第二种:application/x-www-form-urlencoded:name1= value1&name2=value2
  3. 第三种:multipart/form-data:这一种是表单格式的
    (文件上传,图片上传等混合式)
  4. 第四种:text/xml

examples.getStateName

Body为x-www-form-urlencoded类型

怎么知道body是什么类型?

  1. 接口文档有说明
  2. 自己抓包看

直接通过抓包就可以看出post请求的数据类型,如下图就是x-www-form-urlencoded类型

传data参数就行(无需转json)

代码:

# -*- coding:utf-8 -*-
# @File:sms.py
import requests
host = 'http://127.0.0.1:8002'
session = requests.session()  # 相当于微型浏览器,保持登录态
url = host + '/api/mgr/signin'  # 定义url
body = {"username": "byhy","password": "88888888"
}
resp = session.post(url=url, data=body)status_code=resp.status_code  #获取响应状态码
print('响应状态码:{}'.format(status_code))text=resp.text  # 获取响应内容,结果类型是字符串
print('响应内容:{}'.format(text))json=resp.json()  # 获取响应内容,结果是字典类型
print('响应内容:{}'.format(json))resp_headers=resp.headers  # 获取响应headers
print('响应header:{}'.format(resp_headers))

Body为json类型

​json=body: 这个表示自动将python里面的字典,转化为json格式参数了。关于字典和json的种种关系,后面专门写篇文章讲一下。

代码:

 # -*- coding:utf-8 -*-
import requests
host = 'http://127.0.0.1:8002'
session = requests.session()  # 相当于微型浏览器,保持登录态
url = host + '/api/mgr/signin'  # 定义登录的 url
body = {"username": "byhy","password": "88888888"
}resp = session.post(url=url, data=body)  # 发送登录请求url_add_customer = host + '/api/mgr/customers'  # 新建客户的 url
body = {"action":"add_customer","data":{"name":"tester","phonenumber":"13345679934","address":"深圳市南山区"}
}
resp = session.post(url=url_add_customer, json=body)
print(resp.text)  # 打印响应文本

3.6 put请求

put 请求的接口做法跟 post请求的差不多的,只是把post 请求改为 put请求。一样要看请求的格式。如果是 json 格式,也是用json接,Form格式用data接。

代码:

# -*- coding:utf-8 -*-
# @Time:2021/4/16 9:54
# @File:sms.py
import requests
host = 'http://127.0.0.1:8002'
session = requests.session()  # 相当于微型浏览器,保持登录态
url = host + '/api/mgr/signin'  # 定义登录的 url
body = {"username": "byhy","password": "88888888"
}
resp = session.post(url=url, data=body)url_modify_customer = host + '/api/mgr/customers'  # 修改客户的 url
body = {"action":"modify_customer","id": 52,"newdata":{"name":"深圳市桥北医院","phonenumber":"13345678888","address":"深圳市中医院"}
}
resp = session.put(url=url_modify_customer, json=body)
print(resp.text)  # 打印修改客户接口响应的文本

3.7 delete请求

delete 请求的接口做法跟 post请求的差不多的,只是把post 请求改为 delete请求。一样要看请求的格式。如果是 json 格式,也是用json接,Form格式用data接。

代码:

# -*- coding:utf-8 -*-
# @Time:2021/4/16 9:54
# @File:sms.py
import requests
host = 'http://127.0.0.1:8002'
session = requests.session()  # 相当于微型浏览器,保持登录态
url = host + '/api/mgr/signin'  # 定义登录的 url
body = {"username": "byhy","password": "88888888"
}
resp = session.post(url=url, data=body)url_delete_customer = host + '/api/mgr/customers'  # 删除客户的 url
body = {"action":"del_customer","id": 52
}
resp = session.delete(url=url_delete_customer, json=body)
print(resp.text)  # 打印删除客户接口响应的文本

总结:

requests库的请求方法里参数众多,所以简单总结一下:

    1. get请求带参数就用params=params
    2. post请求是form格式就用data=data
    3. post请求是json类型参数就用json=json
    4. 请求头信息header就用headers=headers

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

记录 | ipad上安装ipa文件

目的:在 ipad 上安装 ipa 文件 首先需要在 mac 端安装 itools pro 下载地址:https://www.thinkskysoft.com/itools/ 然后下载 ipa > 需要有签名的,不然安装不了 然后用数据线连接 ipad 和 mac,应用 -> 安装

C语言——深入理解指针(5)

目录 1. sizeof和strlen的对比 1.1 sizeof 1.2 strlen 1.3 sizeof和strlen 的对比 2. 数据和指针题解析 2.1 一维数组 2.2 字符数组 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2,6 2.3 二维数组 3. 指针运算题解析 3.1 例1 3.2 例2 3.3 例3 3.4 例4 3.5 例5 3.6 例…

OpenCV介绍及安装

目录 1.OpenCV简介 2.OpenCV安装 3.检查OpenCV是否安装成功 4.OpenCV模块 5.学习技巧 1.OpenCV简介 OpenCV(Open Source Computer Vision Library)是一个基于开源发行的跨平台计算机视觉库,主要用于图像处理、计算机视觉和机器学习等领域…

干货|水表基础知识大全

第一部分 水表基础知识 第一节 水表的作用 水表:是用来记录流经自来水管道中水量的一种计量器具,也称为计量器具。 1、水表的发展简史 1825年英国的克路斯发明了真正具有仪表特征的平衡罐式水表以来,水表的发展已有近二百年的历史。期间,水表的结构…

目标检测中的损失函数:IOU_Loss、GIOU_Loss、DIOU_Loss和CIOU_Loss

文章目录 前言1.IOU_Loss(Intersection over Union Loss)2.GIOU_Loss(Generalized Intersection over Union Loss)3.DIOU_Loss(Distance Intersection over Union Loss)4.CIOU_Loss(Complete In…

行云创新:与德国汽车业交流Catena-X数据空间技术有感

近日,行云创新CEO马洪喜先生受深圳高新投、Plug&Play邀请参加Catena-X技术研讨交流会,与西门子全球汽车生态系统总监Claus CREMERS,大众汽车全球数字化生产及流程负责人Frank GOELLER,宝马全球数字化政策负责人Sebastian SCHL…

【国际会议】2024年材料科学与机械应用发展国际会议(ICMSMAD 2024)

2024年材料科学与机械应用发展国际会议(ICMSMAD 2024) 2024 International Conference on Materials Science and Mechanical Application Development(ICMSMAD 2024) 一、【会议简介】 ​2024年材料科学与机械应用发展国际会议(ICMSMAD 2024)即将在美丽的中国成都盛大召开。这…

使用gdb调试正在运行的程序

写一个一秒打印一个数的c程序&#xff0c;并编译运行。 #include<unistd.h> #include<stdio.h> int main(int argc,char **argv){int i0;while(1){sleep(1);i;printf("%d\n",i);}return 0; }vim loop.c gcc loop.c -o loop ./loop 查看该进程的进程号。…

《数据库系统概论》学习笔记——王珊 萨师煊

第一章 绪论 一、数据库系统概述 1.数据库的4个基本概念 &#xff08;1&#xff09;数据 描述事物的符号记录称为数据 &#xff08;2&#xff09;数据库 存放数据的仓库 &#xff08;3&#xff09;数据库管理系统 主要功能&#xff1a; &#xff08;1&#xff09;数据定…

APP逆向工具环境安装

环境安装及配置&#xff1a; 1.JDK安装及配置链接&#xff1a;https://pan.baidu.com/s/146I4vDJdz8YeR0OEqLS8xw 提取码&#xff1a;7h00 2.SDK环境配置链接&#xff1a;https://pan.baidu.com/s/1A8rwqyw8Nn7p93Axqpll3A 提取码&#xff1a;cwv43.NDK环境配置链接&#xff1…

SpringBoot:SpringMVC(上)

文章目录 前言一、SpringMVC是什么&#xff1f;1.1 MVC的定义&#xff1a;1.2 MVC 和 Spring MVC 的关系 二、Spring MVC 创建和连接2.1创建springmvc2.2接下来&#xff0c;创建⼀个 UserController 类&#xff0c;实现⽤户到 Spring 程序的互联互通&#xff0c;具体实现代码如…

MYSQL练题笔记-聚合函数-即时食物配送

我做完上一道题&#xff0c;决定总结一下了&#xff0c;因为现在还是没有一个我认为好的思路去构造语句&#xff0c;这里开始试一试新的思路。果然想要好一点的时候&#xff0c;总是像便秘一下&#xff0c;真的想拉&#xff0c;但是真的难拉啊 一、题目相关内容 1&#xff09…

科普关于msvcp140.dll文件是什么内容,解决msvcp140.dll丢失的修复方法

在使用电脑时出现了关于msvcp140.dll丢失的问题&#xff0c;这是什么情况&#xff0c;出现这样的问题通常都会导致电脑中的一些软件不能使用&#xff0c;那么都有什么办法能够解决msvcp140.dll丢失的问题呢&#xff1f;今天就给大家科普一些关于msvcp140.dll文件是什么的内容&a…

小程序长按识别二维码

小程序开发中要实现长按识别二维码的功能很简单&#xff0c;只需要在image标签里添加如下属性即可&#xff1a; 小程序版本&#xff1a; show-menu-by-longpress"{{true}}" uniapp版本&#xff1a; :show-menu-by-longpress"true" 举例&#xff1a; …

小红书种草笔记多少钱?给大家揭秘

小红书&#xff0c;一个以生活方式分享为主题的社交电商平台&#xff0c;吸引了众多年轻用户。种草笔记&#xff0c;是指用户在小红书上分享的关于某一产品或服务的使用体验、心得感悟&#xff0c;通过图文并茂的形式&#xff0c;激发其他用户的好奇心和购买欲望&#xff0c;从…

资深老鸟整理,高级测试工程师应具备的能力...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、业务熟悉 熟悉…

在国内Facebook广告怎么解决充值渠道问题?

怎么解决Facebook预充值跑广告营销的付款方式问题呢&#xff1f; Facebook跑广告是很多做出口营销的公司或团队喜欢的平台之一&#xff0c;那就避免不了需要支付给Facebook平台广告费用了&#xff0c;那到底用什么方式去充值到FB号上去解决呢&#xff1f;FB预充值有什么咔可以…

操作系统·设备管理

I/O系统是计算机系统的重要组成部分&#xff0c;是OS中最复杂且与硬件密切相关的部分 I/O系统的基本任务是完成用户提出的I/O请求&#xff0c;提高I/O速率以及改善I/O设备的利用率&#xff0c;方便高层进程对IO设备的使用 I/O系统包括用于实现信息输入、输出和存储功能的设备和…

stm32L071KB单片机字节对齐问题

字节对齐问题由来很关键 字节对齐问题由来 字节对齐问题由来 在移植同事代码的时候发现到一个赋值变量的地方就会出现死机&#xff0c;进入hardfault,怎么也找不不到原因&#xff0c;最后没办法去了github https://github.com/armink/CmBacktrace/blob/master/README_ZH.md Cm…

openGauss学习笔记-141 openGauss 数据库运维-例行维护-例行重建索引

文章目录 openGauss学习笔记-141 openGauss 数据库运维-例行维护-例行重建索引141.1 背景信息141.2 重建索引141.3 操作步骤 openGauss学习笔记-141 openGauss 数据库运维-例行维护-例行重建索引 141.1 背景信息 数据库经过多次删除操作后&#xff0c;索引页面上的索引键将被…