python接口自动化测试 - requests库的基础使用
简单介绍
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库的基础使用的更多相关文章
- python接口自动化测试 - requests库的post请求进行文件上传
前言 如果需要发送文件到服务器,比如上传图片.视频等,就需要发送二进制数据. 一般上传文件使用的都是 Content-Type: multipart/form-data; 数据类型,可以发送文件,也可 ...
- python接口自动化测试 - requests库的post请求进行文件下载
前言 之前讲了文件上传,当然就有文件下载啦 文件下载操作步骤 极其简单,将二进制格式的响应内容存进本地文件中,根据需要下载的文件的格式来写文件名即可 down_url = 'https://www.i ...
- 记录python接口自动化测试--requests使用和基本方法封装(第一目)
之前学习了使用jmeter+ant做接口测试,并实现了接口的批量维护管理(大概500多条用例),对"接口"以及"接口测试"有了一个基础了解,最近找了一些用pyt ...
- 【python接口自动化-requests库】【三】优化重构requests方法
一.重构post请求方法 上一张讲了如何使用requests库发送post请求,但是有时候,我们写脚本,不可能这么简单,代码完全不可复用,重复工作,那我们是不是可以想象,把我们的get,post请求, ...
- python接口测试之requests库(一)
一.requests库的安装 requests库作为第三方库,需要安装 cmd模式下,运行pip install requests 二.在学习如何发送请求之前,我们先来了解一下requests库,查看 ...
- 【python接口自动化-requests库】【一】requests库安装
1.概念 requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满 ...
- 【python接口自动化-requests库】【二】requests库简单使用(入门)
一.post请求 前面讲了,我们get请求的时候,引入requests的包,然后直接使用get方法,那么post是不是一样的? 1.首先我们先引入requests import requests 2. ...
- Python接口自动化测试框架实战 从设计到开发
第1章 课程介绍(不要错过)本章主要讲解课程的详细安排.课程学习要求.课程面向用户等,让大家很直观的对课程有整体认知! 第2章 接口测试工具Fiddler的运用本章重点讲解如何抓app\web的htt ...
- 基于Python接口自动化测试框架+数据与代码分离(进阶篇)附源码
引言 在上一篇<基于Python接口自动化测试框架(初级篇)附源码>讲过了接口自动化测试框架的搭建,最核心的模块功能就是测试数据库初始化,再来看看之前的框架结构: 可以看出testcase ...
随机推荐
- (备份)找回 Chrome 配置
C:\Users\xiaogezi.cn\AppData\Local\Google\Chrome\User Data\Default\ 将 Preferences 文件复制到别的地方,用于备份: 将 ...
- RSA学习档案
RSA 学习档案 基本原理 随机选择两个质数p,q模数n=p*qφ(n)=(p−1)(q−1)选择加密指数e: 1 < e < φ(n)计算机密指数d: e*d % φ(n) = 1c = ...
- LVM实现将2块磁盘总空间“合二为一”并挂载到同一目录
需求场景 将MySQL主机的2块18T的数据盘空间全部"合并"后挂载到/mysql_data目录下,要求文件系统格式化为xfs:已有关键信息梳理如下: 需要挂载的数据盘 /dev/ ...
- Vue前端挂载对象时一些思考
最近,在Vue前端调试http请求,无论如何如何也是拦截不了某些http请求.场景是这样的:Java后端组装好Vue对象,然后送到前端,前端通过id来挂载该Vue对象,而该对象中有上传文件或者图片的控 ...
- Git分支规范说明
1.分支类型说明 分支名称 分支描述 唯一 权限管理 release 发布分支,内部分支,当确定需要发布版本时,从develop分支拉出此分支 唯一 最高权限,由版本经理或者团队核心成员组管理 mas ...
- python3.6安装lxml库
好像是在python3.5之后,安装了lxml也无法使用etree 为了就解决这个问题使用如下方法: 1.下载lxml的wheel文件,下载地址:https://www.lfd.uci.edu/~go ...
- windows批量删除同名进程
这里以删除chromedriver.exe 黑窗口执行命令:taskkill /F /IM chromedriver.exe 任务管理器发现,内存使用迅速指数下降
- VUE 路由参数改变重新刷新数据
VUE 路由参数改变重新刷新数据 App.vue 里面使用路由,然后通过App.vue文件中的搜索功能搜索刷新路由文件中的列表. 修改 index.js 文件 首先在路由文件 index.js 文件中 ...
- @RendSection{"scripts",require:false}的作用
MVC视图中,Javascripts代码被放于下面的Razor代码中(@section Scripts{}). 好处:在视图进行JavaScript编程时,是一个很好的实践,在共享视图(_Layout ...
- Unable to create initial connections of pool. spring boot mysql
Unable to create initial connections of pool. 在链接url里添加 将useSSL=true改为useSSL=false 只能说明服务器没有打开SSL功能