python+pytest接口自动化(4)-requests发送get请求

python中用于请求http接口的有自带的urllib和第三方库requests,但 urllib 写法稍微有点繁琐,所以在进行接口自动化测试过程中,一般使用更为简洁且功能强大的 requests 库。下面我们使用 requests 库发送get请求。

requests库

简介

requests 库中提供对用的方法用于常用的HTTP请求,对应如下:

requests.get()			# 用于GET请求
requests.post()			# 用于POST请求
requests.put()			# 用于PUT请求
requests.delete()		# 用于DELETE请求

如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386    

【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)_哔哩哔哩_bilibili【已更新】B站讲的最详细的Python接口自动化测试实战教程全集(实战最新版)共计200条视频,包括:1、接口自动化之为什么要做接口自动化、2、接口自动化之request全局观、3、接口自动化之接口实战等,UP主更多精彩视频,请关注UP账号。icon-default.png?t=N7T8https://www.bilibili.com/video/BV17p4y1B77x/?spm_id_from=333.337.search-card.all.click当然还有更多的方法,这里只列举常用的。

安装

安装命令:pip install requests

发送get请求

get请求参数格式说明

requests 中的 get 方法源码如下:

def get(url, params=None, **kwargs):r"""Sends a GET request.:param url: URL for the new :class:`Request` object.:param params: (optional) Dictionary, list of tuples or bytes to sendin the query string for the :class:`Request`.:param \*\*kwargs: Optional arguments that ``request`` takes.:return: :class:`Response <Response>` object:rtype: requests.Response"""kwargs.setdefault('allow_redirects', True)return request('get', url, params=params, **kwargs)

参数说明:

  1. url,即接口地址
  2. params,接口参数,可选(即可填可不填)
  3. **kwargs,可以添加其他请求参数,如设置请求头headers、超时时间timeout、cookies等

不带参数请求

import requestsres = requests.get(url="https://www.cnblogs.com/lfr0123/")
# 请求得到的res是一个Response对象,如果想要看到返回的文本内容,需要使用.text
print(res.text)

带参数请求

import requestsurl = "http://www.baidu.com/s"
params = {"wd": "给你一页白纸-博客园", "ie": "utf-8"}
res = requests.get(url=url, params=params)
print(res.text)

加入请求头headers

有些接口限制只能被浏览器访问,这时按照上面的代码去请求就会被禁止,我们可以在代码中加入 headers 参数伪装成浏览器进行接口请求,示例如下:

import requestsurl = "http://www.baidu.com/s"
params = {"wd": "给你一页白纸-博客园", "ie": "utf-8"}# User-Agent的值为浏览器类型
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"}res = requests.get(url=url, params=params, headers=headers)
print(res.text)

 部分结果如下:

这里的响应体其实就是在百度中搜索给你一页白纸-博客园的结果页面。

除此之外,还可以加入timeout、cookies等,写法如下:

# timeout只限制请求的超时时间,单位为s,若超时则报错
res = requests.get(url=url, params=params, headers=headers, timeout=20, cookies=cookies)

响应内容

发送请求后会获取到接口响应的内容,如上面示例中res.text,其他响应内容获取方式如下:

res.status_code		# 响应状态码
res.headers			# 响应头
res.encoding		# 响应体编码格式
res.text			# 响应体,字符串形式的文本信息
res.content			# 响应体,二进制形式的文本信息,会自动解码
res.cookies			# 响应的cookie
res.json()			# 响应体格式为json,则需要通过json()进行解码

这里需要注意,res.textres.content的使用,具体使用哪种方式获取响应体内容,需要根据编码方式进行选择,最笨的方法就是一种不行换另一种试试。

示例如下:

import requestsurl = "http://www.baidu.com/s"
params = {"wd": "给你一页白纸-博客园", "ie": "utf-8"}
# User-Agent的值为浏览器类型
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.82 Safari/537.36"}res = requests.get(url=url, params=params, headers=headers)
print(res.text)
print(res.status_code)
print(res.headers)
print(res.encoding)
print(res.cookies)

 结果如下:

结果中由上而下依次对应代码中print的响应内容。

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

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

相关文章

开源生成式AI初创平台together.ai,获7.3亿元融资

11月30日&#xff0c;开源生成式AI平台Together AI在官网宣布&#xff0c;获得1.025亿美元&#xff08;约7.3亿元&#xff09;A轮融资。本次由凯鹏华盈 (Kleiner Perkins) 领投&#xff0c;英伟达、Emergence Capital、 NEA、Prosperity 7、Greycroft等跟投。 公开资料显示&am…

LeetCode(34)有效的数独【矩阵】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 36. 有效的数独 1.题目 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 &#xff0c;验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗…

c MJPG(1)

.读取量化表&#xff0c;全局参数&#xff0c;霍夫曼表&#xff0c;恢复表编码&#xff0c;现在只是实现思路。 #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <sys/ioctl.h> #include <sy…

1.网络编程基础知识 - 基础概念、TCP网络通信、UDP网络通信

网络编程 文章目录 网络编程一、概念1.1 网络1.2 IP地址1.2.1 IPv4 介绍1.2.2 IPv6 介绍1.2.3 查看IP地址 1.3 域名和端口1.4 网络协议1.5 TCP与UDP1.6 InetAddress类1.7 Socket 二、TCP网络通信编程2.1 介绍2.2 案例2.2.1 字节流编程案例12.2.2 字节流编程案例22.2.3 字符流编…

项目终验的exce表格缩放,排版等经常使用

xxx个项目的验收资料 1.申请表等等很多信息 需求&#xff1a;放在一页内等办法 上述文档&#xff0c;在excel表格打印预览中都是在两页中&#xff0c;很难调节&#xff0c;这个时候采用wps专业版本即可。 wps排版经常使用的功能如下&#xff1a; 经常使用的是 1.把所有列打印…

骨传导与入耳式耳机哪种音质好?骨传导与入耳式耳机有什么区别?

由于骨传导耳机和入耳式耳机的传声原理不同&#xff0c;入耳式耳机的音质要更好一些&#xff01; 想要了解骨传导耳机和入耳式耳机哪种音质好&#xff0c;首先就要了解骨传导耳机和入耳式耳机的传声原理有什么区别&#xff1f; 一、骨传导耳机和入耳式耳机有什么区别 1、传声…

MySQL与其他数据库产品的比较,优势在哪里?

作为数据库管理领域的博主作家&#xff0c;我深知数据库在软件开发和数据管理中的重要性。在当今众多的数据库产品中&#xff0c;MySQL作为一种流行的开源关系型数据库管理系统&#xff0c;具有许多优势和特点。下面&#xff0c;我将通过对与其他数据库产品的比较以及MySQL的优…

【JavaEE】线程安全与线程状态

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…

牛客算法心得——abb(dp)

大家好&#xff0c;我是晴天学长&#xff0c;传智杯的题&#xff0c;我准备写一个题解&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1) .abb leafee 最近爱上了 abb 型语句&#xff0c;比如“叠词词”、…

深入探索Maven:优雅构建Java项目的新方式(二)

Meven高级 1&#xff0c;属性1.1 属性1.1.1 问题分析1.1.2 解决步骤步骤1:父工程中定义属性步骤2:修改依赖的version 1.2 配置文件加载属性步骤1:父工程定义属性步骤2:jdbc.properties文件中引用属性步骤3:设置maven过滤文件范围步骤4:测试是否生效 1.3 版本管理 2&#xff0c;…

Xpath定位文本中含有空格的元素

可以使用XPath中的normalize-space函数来定位文本中含有空格的元素。主要包含normalize-space(.)、normalize-space(text())两种用法&#xff1a; 使用 normalize-space(.) 的例子&#xff1a; <root><element>Hello, world!</element> </root>在上述…

从实践角度深入探究数据驱动和关键字驱动测试方法!

数据驱动 数据驱动&#xff0c;指在软件测试领域当中的数据驱动测试&#xff08;Data-Driven Testing&#xff0c;简称DDT&#xff09;是⼀种软件测试⽅法&#xff0c;在不同的数据下重复执⾏相同顺序的测试步骤&#xff0c;测试脚本从数据源读取测试数据&#xff0c;⽽不使⽤…