python+requests实现接口测试 - get与post请求使用(转载)
转自:http://www.cnblogs.com/nizhihong/p/6567928.html
简介:Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的,所以它比 urllib 更加 Pythoner。更重要的一点是它支持 Python3 哦!
一、安装
使pip安装:
pip install requests
安装完后,运行一个简单的例子查看是否安装成功:

二、几种请求类型
①get请求:requests.get('url')
②post请求:requests.post("url/post")
③put请求:requests.put("url/put")
④delete请求:requests.delete("url/delete")
⑤head请求:requests.head("url/get")
⑥options请求:requests.options("url/get")
三、get请求
传递url参数
在get请求中,允许使用params关键字,以一个字典来传递这些参数,例如:

如果字典中存在None的值,是不会添加到url请求中的

ps:不使用params的话,也可在请求中输入全部的地址,效果相同,如:
r=requests.get('http://m.xxxxx.com/api/v2/activities?pageIndex=1&pageSize=10&categoryId=9')
注意:在某些get请求中,需要辨别用户身份,因此会需要在请求中发送cookie内容,如某些需要用户登录才能访问的页面,相关内容请轻戳这里
四、post请求
1.以表单形式传递参数:
想要发送一些表单形式的数据,只需简单的传递一个字典给data关键字,在发送请求的时候,会自动编码为表单的形式,例如:

2.以json形式传递参数:
在很多情况下,想要发送的数据并非为表单形式,而是一个json格式的字符串,如果传递给data关键字的内容不是一个dict,而是
一个string,那么在发送的时候,数据会被直接发送出去,不会自动编码为表单形式。
为了将一个数据结构转换为json格式的字符串,首先得需要导入一个json包,两种常用的方法为:json.dumps()与json.loads()

注意:1.json编码支持的基本类型有:None, bool, int, float, string, list, tuple, dict。对于字典,json会假设key是字符串(字典中的任何非字符串key都会在编 码时转换为字符串),要符合JSON规范,应该只对python列表和字典进行编码。此外,在WEB应用中,把最顶层对象定义为字典是一种标准做法。 2.json编码的格式几乎和python语法一致,略有不同的是:True会被映射为true,False会被映射为false,None会被映射为null,元组()会被映射为列表[],如:

因此 想要在post请求中使用data关键字来传递json格式的字符窜,首先得把dict转为string,例如:

除了可以对dick编码后以string的方式传递参数外,还可以直接使用json关键字直接传递,在传递时会自行进行编码为string类型

五、定制headers
若想要为请求添加头部信息,只需要在请求中使用headers关键字传递一个字典即可
首先简单介绍下headers中的内容:
Host:www.xxx.com 指定请求资源的主机
Accept:image/png,*/*,q=0.5 指定客户端接受哪些类型的响应内容
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6 客户端的操作系统语言,通常使用中文操作系统,属性值一般为zh-cn
Accept-Encoding:gzip, deflate 客户端所能接受的编码规则或格式规范
Referer:Referer':'http://xx.com/user/login.html? 可以理解为请求来源
Connection:keep-alive 表示当client和server通信时对于长链接如何处理
cookies 不解释...
....
查看请求中发出的请求头,可以使用如下方法:
import requestsr=requests.post(url,data)print(r.request.headers) #查看发出的请求头-----结果-----{'User-Agent': 'python-requests/2.13.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', <br>'Content-Length': '49', 'Content-Type': 'application/json'}
六、响应
1.响应状态
在请求发送成功后,可以用status_code来查看相应状态(每个状态代表的具体意义不在此文介绍)

2.响应内容
在上面的内容中,已经展示了用text来获取相应的内容,返回的内容为string

除此之外,requests中也带有带有一个内置的json解码器,将返回的内容转换为dict

那么通过json解码器转为dict后,想要查看到返回内容中某个具体参数的值,就比较方便啦!
3.响应内容编码格式
在获取响应内容的时候,可以使用r.encoding来查看相应内容的编码格式

也可以进行指定编码,当改变了编码方式是后,每次获取响应内容,都会使用新的编码方式

4.响应头内容

5.cookies

七、设置超时时间
可以通过timeout来设置超时时间,如果在此时间内没有响应,会报错

python+requests实现接口测试 - get与post请求使用(转载)的更多相关文章
- python+requests实现接口测试 - get与post请求使用
简介:Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 ...
- python+requests+json 接口测试思路示例
实际项目中用python脚本实现接口测试的步骤: 1 发送请求,获取响应 >>2 提取响应里的数据,对数据进行必要的处理 >>3 断言响应数据是否与预期一致 以豆瓣接口为例 ...
- python+requests实现接口测试 - cookies的使用
在很多时候,发送请求后,服务端会对发送请求方进行身份识别,如果请求中缺少识别信息或存在错误的识别信息, 会造成识别失败. 如一些需要用户登录以后才能访问的页面. import requests mya ...
- Python+requests+excel接口测试
2018-06-14 17:00:13 环境准备: - Python 3.7 - requests库 - xlrd 1.创建Excel文件 2.读取Excel文件 import xlrd clas ...
- python+requests之接口测试
最近学习接口测试,测试工具玩的差不多了,想用代码来尝试一下. 发现一个简单的库,requests 一:安装 pip install requests 二:使用 import requests url ...
- python+requests实现接口测试 - cookies的使用 (转载)
出自:https://www.cnblogs.com/nizhihong/p/6699492.html 在很多时候,发送请求后,服务端会对发送请求方进行身份识别,如果请求中缺少识别信息或存在错误的识别 ...
- python+requests+excel 接口测试
1.EXCEL文件接口保存方式,如图. 2.然后就是读取EXCEL文件中的数据方法,如下: import xlrd class readExcel(object): def __init__(self ...
- python+requests接口自动化完整项目设计源码【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/python%E6%8E%A5%E5%8F%A3%E8%87%AA%E5%8A%A8%E ...
- requests实现接口测试
python+requests实现接口测试 - get与post请求基本使用方法 http://www.cnblogs.com/nizhihong/p/6567928.html Requests ...
随机推荐
- 设计模式(13)--Chain of Responsibility(责任链模式)--行为型
作者QQ:1095737364 QQ群:123300273 欢迎加入! 1.模式定义: 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一 ...
- kotlin-2(IdeaIU-2018.2汉化破解)
1.下载文件包: 链接:https://pan.baidu.com/s/1AaAqkJ5E88k69dhcDiC0tA 提取码:b5uk 2.点击ideaIU-2018.2安装软件,安装完成后,不要点 ...
- AngularJS学习 之 UI以及逻辑生成
学习<Angular高级编程>理解如下 要求: 创建如下界面,有导航栏,一个Watchlists面板,面板上有个加号button,一句说明“”Use+to create a list“” ...
- AsyncTask POST请求
布局: <?xml version="1.0" encoding="utf-8"?> <android.support.constraint. ...
- XQuery使用sum求和,提示char不能转换为money解决方法
select axml.value('sum(/root/pro/price)','money') 以上代码提示‘char不能转换为money’的错误,发现值为'0.0E0'.改为: select a ...
- nginx 配置 非80 的其他 端口
如果nginx的监听端口不是默认的80端口,改为其他非80端口后,后端服务tomcat中的request.getServerPort()方法无法获得正确的端口号,仍然返回到80端口.在response ...
- Python笔记(三):构建发布模块
(一) 准备工作 1. 新建一个模块(名称自定义),存放要发布的模块代码. 2. 新建一个setup.py的模块(存放模块的元数据,描述相关信息). 3. 新建一个文件夹(名称 ...
- .NET(C#)使用Serialize、Deserialize序列和反序列化XML文档
本文给大家分享一下C#操作(读取.写入)XML文档的实用方法,即用.NET本身提供的Deserialize和Serialize进行反序列化和序列化XML文档.这种方法主要是对比较规范的XML文档进行操 ...
- LeetCode题解之Rotated Digits
1.题目描述 2.代码 int rotatedDigits(int N) { ; ; i <= N; i++) { if (isGood(i)) { res++; } } return res; ...
- 解决MySQL5.6中的Slave延迟问题的基本教程
一.原因分析一般而言,slave相对master延迟较大,其根本原因就是slave上的复制线程没办法真正做到并发.简单说,在master上是并发模式(以InnoDB引擎为主)完成事务提交的,而在sla ...