简单介绍

requests库简单易用的HTTP库

  

Get请求

格式: requests.get(url)

注意:若需要传请求参数,可直接在 url 最后的 ? 后面,也可以调用 get() 时多加一个参数 params ,传入请求参数,注意需要是 dict 格式;如下图所示

     url = 'http://127.0.0.1:8888/passport/user/login'
param = {
'username': '',
'password': ''
} """通过params传参"""
res = requests.get(url, params=param)
# {'code': 200, 'msg': 'success', 'password': '321', 'username': '123'}
print(res.json()) """通过params方式传参,最终发出的url也是一致的"""
# http://127.0.0.1:8888/passport/user/login?username=123&password=321
print(res.url) """通过url最后加上请求参数列表"""
url = 'http://127.0.0.1:8888/passport/user/login?username=123&password=321'
res = requests.get(url, verify=False)
# {'code': 200, 'msg': 'success', 'password': '321', 'username': '123'}
print(res.text)

重点:发送请求赋值的res,可以看成是请求的上下文,既可以获取请求相关参数值,也可以获取响应相关参数值

Post请求

格式: requests.post(url,data)

注意:若无请求参数可不传 data ;当传入请求参数时,需要传 dict 格式

     url = 'http://127.0.0.1:8888/passport/user/post_login'
data = {
'username': '',
'password': ''
} """传入请求参数"""
res = requests.post(url, data=data)
# {'code': 200, 'msg': 'success', 'password': '321', 'username': '123'}
print(res.json()) """查看请求url"""
# http://127.0.0.1:8888/passport/user/post_login
print(res.url)

其他类型请求

     r = requests.put('http://httpbin.org/put', data={'key': 'value'}).text
r = requests.delete('http://httpbin.org/delete').text
r = requests.head('http://httpbin.org/head').text

自定义headers和cookies

     """自定义headers"""
url = 'https://api.github.com/some/endpoint'
headers = {'user-agent': 'my-app/0.0.1'} r = requests.get(url, headers=headers)
# {'message': 'Not Found', 'documentation_url': 'https://developer.github.com/v3'}
print(r.json()) """自定义cookies"""
url = 'http://httpbin.org/cookies'
cookies = dict(cookies_are='working')
cookies2 = {'cookies_are': 'working'} r = requests.get(url, cookies=cookies)
# {'cookies': {'cookies_are': 'working'}}
print(r.json())

SSL 证书验证

当发送请求如果报以上错误时,可以在请求方法里加多一个字段 verify=False ,就可以解决此问题;此操作是为了免去验证步骤

url = 'https://www.imooc.com'
res = requests.get(url, verify=False)

响应内容

注意:当调用 json() 时,确保响应内容是json格式字符串,否则会报错

     url = 'http://127.0.0.1:8888/passport/user/login'
param = {
'username': '',
'password': ''
}
res = requests.get(url, params=param)
print('请求url: ' + res.url)
print('响应内容 json格式: ' + json.dumps(res.json()))
print('响应内容 字符串格式: ' + res.text)
print('响应内容 二进制格式: ' + str(res.content))
print('响应码: ' + str(res.status_code))

获取header

注意:headers里面的key是大小写不敏感的

>>> r.headers['Content-Type']
'application/json' >>> r.headers.get('content-type')
'application/json'

获取cookies

>>> r.cookies['example_cookie_name']
'example_cookie_value'

python接口自动化测试 - requests库的基础使用的更多相关文章

  1. python接口自动化测试 - requests库的post请求进行文件上传

    前言 如果需要发送文件到服务器,比如上传图片.视频等,就需要发送二进制数据. 一般上传文件使用的都是 Content-Type: multipart/form-data; 数据类型,可以发送文件,也可 ...

  2. python接口自动化测试 - requests库的post请求进行文件下载

    前言 之前讲了文件上传,当然就有文件下载啦 文件下载操作步骤 极其简单,将二进制格式的响应内容存进本地文件中,根据需要下载的文件的格式来写文件名即可 down_url = 'https://www.i ...

  3. 记录python接口自动化测试--requests使用和基本方法封装(第一目)

    之前学习了使用jmeter+ant做接口测试,并实现了接口的批量维护管理(大概500多条用例),对"接口"以及"接口测试"有了一个基础了解,最近找了一些用pyt ...

  4. 【python接口自动化-requests库】【三】优化重构requests方法

    一.重构post请求方法 上一张讲了如何使用requests库发送post请求,但是有时候,我们写脚本,不可能这么简单,代码完全不可复用,重复工作,那我们是不是可以想象,把我们的get,post请求, ...

  5. python接口测试之requests库(一)

    一.requests库的安装 requests库作为第三方库,需要安装 cmd模式下,运行pip install requests 二.在学习如何发送请求之前,我们先来了解一下requests库,查看 ...

  6. 【python接口自动化-requests库】【一】requests库安装

    1.概念 requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满 ...

  7. 【python接口自动化-requests库】【二】requests库简单使用(入门)

    一.post请求 前面讲了,我们get请求的时候,引入requests的包,然后直接使用get方法,那么post是不是一样的? 1.首先我们先引入requests import requests 2. ...

  8. Python接口自动化测试框架实战 从设计到开发

    第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...

  9. 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码

    引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...

随机推荐

  1. Pikachu-php反序列化

    在理解这个漏洞前,你需要先搞清楚php中serialize(),unserialize()这两个函数. 序列化serialize()序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对象 ...

  2. Jungle Roads POJ - 1251 模板题

    #include<iostream> #include<cstring> #include<algorithm> using namespace std; cons ...

  3. CodeForces 1144B

    原题https://vjudge.net/problem/CodeForces-1144B #include<bits/stdc++.h> using namespace std; vec ...

  4. c#从前台界面找后台方法

    比如你新接触一个项目  项目别人已经写的差不多了  你对项目一无所知,别人安排给你活  怎么最快速度找到你要干的活对应的东西 以谷歌浏览器为例 一个项目你要修改  库存信息列表 右键检查或者F12 找 ...

  5. Pytest学习7-参数化

    在测试过程中,参数化是必不可少的功能,本文就讨论下pytest的几种参数化方法 @pytest.mark.parametrize:参数化测试函数 1.内置的pytest.mark.parametriz ...

  6. while与do while

    一:循环结构 循环的概念:重复得做某一件事情 举例: 打印50份试卷 沿操场跑10圈 做100道编程题 循环结构的特点: 循环条件 (50,10,100) 循环操作 (打印试卷,沿操场跑圈,做编程题) ...

  7. 网格布局 grid(1)

    目录 网格布局 grid(1) 实现方式 对容器设置的属性 行高与列宽的设置 单元格的间距 内容的位置 表格在容器的位置 兼容问题 网格布局 grid(1) 实现方式 display:grid 也可成 ...

  8. AE接口编程

    [转]原文链接:https://malagis.com/arcgis-engine-10-develop-handbook-2-1.html 使用 ArcGIS Engine,也就意味着使用里面的接口 ...

  9. opencv 实现人脸检测(harr特征)

    我这里用的是已经训练好的haar级联分类器. 眼睛检测 haarcascade_eye_tree_eyeglasses.xml 人脸检测 haarcascade_frontalface_alt2.xm ...

  10. TensorFlow 2.0高效开发指南

    Effective TensorFlow 2.0 为使TensorFLow用户更高效,TensorFlow 2.0中进行了多出更改.TensorFlow 2.0删除了篇冗余API,使API更加一致(统 ...