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


    【文章末尾给大家留下了大量的福利】

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

    requests库

    简介

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

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

    当然还有更多的方法,这里只列举常用的。

    安装

    安装命令:pip install requests

    发送get请求

    get请求参数格式说明

    requests 中的 get 方法源码如下:

    1. def get(url, params=None, **kwargs):
    2. r"""Sends a GET request.
    3. :param url: URL for the new :class:`Request` object.
    4. :param params: (optional) Dictionary, list of tuples or bytes to send
    5. in the query string for the :class:`Request`.
    6. :param \*\*kwargs: Optional arguments that ``request`` takes.
    7. :return: :class:`Response ` object
    8. :rtype: requests.Response
    9. """
    10. kwargs.setdefault('allow_redirects', True)
    11. return request('get', url, params=params, **kwargs)

    参数说明:

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

    不带参数请求

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

    带参数请求

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

    加入请求头headers

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

    1. import requests
    2. url = "http://www.baidu.com/s"
    3. params = {"wd": "给你一页白纸-博客园", "ie": "utf-8"}
    4. # User-Agent的值为浏览器类型
    5. headers = {
    6. "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"
    7. }
    8. res = requests.get(url=url, params=params, headers=headers)
    9. print(res.text)

    部分结果如下:

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

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

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

    响应内容

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

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

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

    示例如下:

    1. import requests
    2. url = "http://www.baidu.com/s"
    3. params = {"wd": "给你一页白纸-博客园", "ie": "utf-8"}
    4. # User-Agent的值为浏览器类型
    5. headers = {
    6. "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"
    7. }
    8. res = requests.get(url=url, params=params, headers=headers)
    9. print(res.text)
    10. print(res.status_code)
    11. print(res.headers)
    12. print(res.encoding)
    13. print(res.cookies)

    结果如下:

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

     重点:学习资料学习当然离不开资料,这里当然也给你们准备了600G的学习资料

    【需要的可以扫描文章末尾的qq群二维码自助拿走】

    【记得(备注“csdn000”)】

    【或私信000】

    群里的免费资料都是笔者十多年测试生涯的精华。还有同行大神一起交流技术哦。

    项目实战:

    大型电商平台:

    全套软件测试自动化测试教学视频

    300G教程资料下载【视频教程+PPT+项目源码】

    全套软件测试自动化测试大厂面经

    python自动化测试++全套模板+性能测试

    听说关注我并三连的铁汁都已经升职加薪暴富了哦!!!!

  • 相关阅读:
    世界上很少人知道的网站(三)
    centos7.4启动卡在7的界面
    开发一个python工具,pdf转图片,并且截成单个图片,然后修整没用的白边及循环遍历文件夹全量压缩图片
    分布式共识算法——Paxos算法(图解)
    微信、支付宝、字节多平台小程序集成到企业App的兼容处理
    储存卡数据怎么恢复?恢复靠它
    前端培训丁鹿学堂:vue3之watchEffect和生命周期函数总结
    华清远见(上海中心)22071
    【曹工杂谈】Mysql-Connector-Java时区问题的一点理解--写入数据库的时间总是晚13小时问题
    JVM 面试题
  • 原文地址:https://blog.csdn.net/m0_60054525/article/details/126842138