测试之旅Ⅱ-接口测试(Python requests)①
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了测试之旅Ⅱ-接口测试(Python requests)①,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2973字,纯文字阅读大概需要5分钟。
内容图文
![测试之旅Ⅱ-接口测试(Python requests)①](/upload/InfoBanner/zyjiaocheng/843/9dc7fdd893ab4d6f9b282805c251ec3f.jpg)
接口测试
Python有很多模块都可以发送HTTP请求,包括原生的模块http.client,urllib2等,第三方模块requests等,都封装了发送HTTP请求的方法。这里为了使用方便,便于理解,我们选用requests模块。
requests模块的安装
打开操作系统的命令行窗口输入
pip install requests
pip包管理工具就会自动安装requests模块及其相关模块,然后就可以引入该模块,使用该模块提供的方法了。
import requests
一个简单的试验
刚刚安装好是不是已经迫不及待地进行使用了呢,接下来我们用一个小例子初识requests。
import requests
res= requests.get("http://www.baidu.com")
print(res.status_code)
运行上述代码,我们可能会得到如下结果:
证明我们已经请求成功。第一行我们对requests包进行了引入,以让我们可以使用其方法,第二行我们通过GET方法请求百度网站信息并将返回结果赋值给res,第三行我们将res这个结果对象的status_code状态码打印出来。那我们又是如何知道我们请求成功了呢?下面列举一些常见的HTTP状态码。
- 200 请求成功
- 404 请求的资源不存在
- 500 内部服务器错误
若想了解更多,请自行百度。
一些简单的讲解
通过上面那个简单的小例子可以看出,requests模块的使用是相当简洁的,我们可以调用其中的请求方法轻易地对网站进行请求,而参数最少应该是请求的网站地址,不然它怎么知道你想请求谁呢?正如这样:
requests.get("http://www.baidu.com")
当然你也可以这样:
requests.post("http://www.nicerwu.cn")
requests.put('http://www.nicerwu.cn', data = {'key':'value'})
requests.delete('http://www.nicerwu.cn')
requests.head('http://www.nicerwu.cn')
requests.options('http://www.nicerwu.cn')
显然这样的请求有些过于简单,我们往往需要在请求中携带参数。
requests.get("https://www.imooc.com/search/?words=vuejs")
类似这样在请求的地址后面打上一个问号,跟上你要携带的参数当然可以,事实上GET方法携带参数的本质正是如此。不过当参数多而复杂时,这显然不是最好的解决办法。requests模块为我们提供了一个参数params。以字典键值对的方式携带参数,就像这样:
requests.get("https://www.imooc.com/search/", params={'words': 'vuejs'})
或者这样:
Skey = {'words': 'vuejs'}
res= requests.get("https://www.imooc.com/search/", params= Skey)
将最终请求的url打印出来:
print(res.url)
结果正如我们前面所说,requests模块帮我们进行了处理,本质上最终还是请求了这个地址。
几个常用返回对象属性
- res.headers 获取返回的头部信息
- res.text 获取返回的主体
- res.cookies 获取返回的cookie
- res.status_code 获取返回的状态码
请求发出后,requests模块会基于HTTP头部对响应的编码作出有根据的推测,当我们使用res.text时,requests模块会自动使用其推测的编码,你可以使用res.encoding来对它进行改变。
给你的请求,加点伪装
通常我们使用伪造头部信息对自己的请求进行一些简单的伪装,就像如果我想把我的请求伪装成一个手机发出的,我可以这样:
import requests
url = "http://www.baidu.com"
header = {"User-Agent": "Android/H60-L01/4.4.2/"}
res = requests.get(url, headers = header)
错误和异常
-
遇到网络问题(如:DNS 查询失败、拒绝连接等)Requests 会抛出一个 ConnectionError
-
如果 HTTP 请求返回了不成功的状态码, Response.raise_for_status() 会抛出一个 HTTPError 异常。
-
若请求超时,则抛出一个 Timeout 异常。
-
若请求超过了设定的最大重定向次数,则会抛出一个 TooManyRedirects 异常。
-
所有Requests显式抛出的异常都继承自 requests.exceptions.RequestException 。
内容总结
以上是互联网集市为您收集整理的测试之旅Ⅱ-接口测试(Python requests)①全部内容,希望文章能够帮你解决测试之旅Ⅱ-接口测试(Python requests)①所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。