1. 什么是接口测试?
接口测试是指对程序接口的测试,这里的程序接口指的是应用程序中的函数或过程。接口测试一般用于系统集成阶段,它的主要作用是测试不同模块之间是否有正确的交互,以及是否按照预定的协议进行通信。接口测试是黑盒测试中的一种,它关注于输入输出的正确性,而不考虑内部的实现细节。
接口测试可以通过模拟调用某个函数或者接口来进行测试,也可以通过实际调用某个已有的接口来检测其是否符合预期的行为和性能。接口测试可以用于不同的程序语言和操作系统之间的通信测试,常用的测试工具有Python语言的requests库。
2. requests库简介
requests库是用于发送HTTP/1.1请求的Python第三方库,它支持 Python 2.7+和Python 3+,操作简单且效率高。requests库有许多强大的功能,包括基本的登录认证、cookie、自动跳转、文件上传等。Requests 支持主流的文件格式、Cookie、HTTP(S)代理、几乎所有的 HTTP 方法、HTTP/1.1与HTTP/1.0 Keep-Alive 持久连接和更快的连接池等特性。
3. requests库的安装
3.1 安装方法一(pip方式)
在命令行中输入以下指令,即可使用pip安装requests:
pip install requests
3.2 安装方法二(源码方式)
可到https://pypi.org/project/requests/#files下载requests的源代码,下载后在本地解压,运行以下命令完成安装:
python setup.py install
4. requests库的基本用法
4.1 GET请求
使用 requests.get() 方法可以发送 GET 请求,示例代码如下:
import requests
# 发送一个URL为httpbin.org/get的GET请求
response = requests.get("http://httpbin.org/get")
# 获取响应状态码
print(response.status_code)
# 获取响应内容
print(response.text)
结果输出:
200
{
"args": {},
"headers": {
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.24.0",
"X-Amzn-Trace-Id": "Root=1-5f8c87b8-54ff15a63b2e4f0d34f05e63"
},
"url": "http://httpbin.org/get"
}
上述代码使用requests.get()方法向URL为httpbin.org/get的服务器发送GET请求,接收到返回的响应后,获取了响应的状态码和响应内容。(状态码200表示请求成功,响应内容是一个JSON格式的字符串。
4.2 POST请求
使用 requests.post() 方法可以发送 POST 请求,示例代码如下:
import requests
# 发送一个URL为httpbin.org/post的POST请求
response = requests.post("http://httpbin.org/post", data={"name": "John"})
# 获取响应状态码
print(response.status_code)
# 获取响应内容
print(response.text)
结果输出:
200
{
"args": {},
"data": "",
"files": {},
"form": {
"name": "John"
},
"headers": {
"Accept-Encoding": "gzip, deflate",
"Content-Length": "9",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.24.0",
"X-Amzn-Trace-Id": "Root=1-5f8c8846-057186a33d37c63cdbd9f6c9"
},
"json": null,
"origin": "45.72.127.37",
"url": "http://httpbin.org/post"
}
上述代码使用requests.post()方法向URL为httpbin.org/post的服务器发送POST请求,请求内容是一个包含name属性的表单,接收到返回的响应后,获取了响应的状态码和响应内容。(状态码200表示请求成功,响应内容是一个JSON格式的字符串。
5. requests库接口实战示例
5.1 示例背景
现有一个名为“图书馆书籍查询”的网站,该网站提供了一个查询书籍信息的API,使用者可以通过发送HTTP请求查询到对应的书籍信息。
书籍查询API的URL为:http://library.com/book/queryBook,其中需要提供两个参数:书籍名称(bookName)和作者(author)。
现需要使用Python的requests库来实现对该API的自动化测试,验证书籍查询API能否正确地返回书籍信息。
5.2 业务分析
通过对API的调用格式以及返回结果进行分析,得到以下信息:
请求方式:POST
请求参数:bookName, author
返回结果:bookName, author, price, publish_time, url
其中,返回结果中的 price 和 publish_time 可能为空,url 则为该书的详细信息页面。
5.3 编写测试代码
根据上述业务分析,编写如下的测试代码:
import requests
# 构造请求URL和请求参数
url = "http://library.com/book/queryBook"
params = {
"bookName": "三体",
"author": "刘慈欣"
}
# 发送POST请求并获取响应
response = requests.post(url=url, data=params)
# 解析响应结果
result = response.json()
# 断言返回结果中含有书籍名称、作者和URL三个字段,并且名称和作者正确
assert result.get("bookName") == "三体"
assert result.get("author") == "刘慈欣"
assert result.get("url") == "http://library.com/book/123456"
print("测试成功")
上述代码中,首先指定了URL和请求参数;然后使用 requests.post() 方法发送POST请求,并获取到响应。
接下来,使用 response.json() 方法将响应结果转换为JSON格式,并使用 assert 语句进行断言。通过断言,我们检查了返回结果中包含了书籍名称、作者和URL三个字段,并且名称和作者与输入参数相同。
最后输出测试成功的信息。如果所有的断言都通过,那么该API的测试就被视作通过。
6. 总结
文章讲述了接口测试和Python第三方库requests的相关知识,介绍了requests库的基本用法和安装方法,并且通过一个API实战示例说明如何使用requests库进行接口测试。
除此之外,requests库还有很多功能和用法,例如文件上传、Cookie、会话维持等,读者可以通过官方文档和其他相关资料来深入了解。