用Postman 和 JMeter 来做接口测试和性能测试
使用 Postman 进行接口测试
Postman 是一款功能强大的 API 测试工具,下面是使用它进行接口测试的基本步骤:
- 安装并启动 Postman:你可以从 Postman 官网 下载并安装应用程序,之后打开它。
- 创建请求:
- 打开 Postman 后,点击界面左上角的 “New” 按钮,选择 “Request” 来创建一个新的请求。
- 为请求命名并选择保存的集合(Collection),集合可用于组织多个相关请求。
- 设置请求信息:
- 请求方法:在请求框左侧选择合适的请求方法,像 GET、POST、PUT、DELETE 等。
- 请求 URL:在 URL 输入框中填入接口的完整 URL。
- 请求头(Headers):若接口需要特定的请求头,就在 “Headers” 标签页添加相应的键值对,例如设置 “Content-Type” 为 “application/json”。
- 请求体(Body):如果是 POST 或 PUT 请求,需要在 “Body” 标签页提供请求数据。依据接口要求选择数据格式,如 “raw”(纯文本)、“form-data”(表单数据)等。
- 发送请求并查看响应:点击 “Send” 按钮发送请求,Postman 会显示接口的响应信息,涵盖状态码、响应头和响应体。
- 设置断言:为保证接口返回的数据符合预期,可以设置断言。点击 “Tests” 标签页,编写 JavaScript 代码来进行断言。例如:
pm.test("Status code is 200", function () {
pm.response.to.have.status(200);
});
- 运行集合:若有多个请求组成的集合,可点击集合名称旁边的 “Run” 按钮,配置运行参数后批量运行请求。
使用 JMeter 进行接口测试
JMeter 是一个开源的性能测试工具,也可用于接口功能测试,下面是基本步骤:
- 安装并启动 JMeter:从 JMeter 官网 下载压缩包,解压后进入
bin目录,运行jmeter.bat(Windows)或jmeter.sh(Linux/Mac)。 - 创建测试计划:打开 JMeter 后,默认会创建一个测试计划。你可以右键点击测试计划,选择 “Add” -> “Threads (Users)” -> “Thread Group” 来添加线程组。
- 配置线程组:线程组用于模拟并发用户,可设置线程数、循环次数等参数。
- 添加 HTTP 请求:右键点击线程组,选择 “Add” -> “Sampler” -> “HTTP Request” 来添加一个 HTTP 请求。
- 设置请求信息:
- 服务器名称或 IP:输入接口的服务器地址。
- 端口号:输入接口的端口号,默认是 80(HTTP)或 443(HTTPS)。
- 请求方法:选择合适的请求方法。
- 路径:输入接口的相对路径。
- 请求头:在 “HTTP Header Manager” 中添加请求头信息。
- 请求体:在 “Body Data” 中输入请求数据。
- 添加断言:为验证接口响应是否符合预期,右键点击 HTTP 请求,选择 “Add” -> “Assertion” -> “Response Assertion”,设置断言规则。
- 添加监听器:监听器用于查看测试结果,右键点击线程组,选择 “Add” -> “Listener”,可以添加 “View Results Tree”(查看详细请求和响应信息)、“Aggregate Report”(查看统计信息)等监听器。
- 运行测试:点击工具栏上的 “Start” 按钮运行测试,测试完成后,在监听器中查看测试结果。
通过上述步骤,你就能使用 Postman 和 JMeter 进行接口测试了。Postman 适合单个接口的功能测试和调试,而 JMeter 更适合进行并发性能测试和批量接口测试。
Postman 自身的断言是基于 JavaScript 编写的,不能直接使用 Python 来写断言。
Postman 的测试脚本环境是基于 JavaScript 引擎的,它提供了一系列用于编写断言和执行测试逻辑的 JavaScript API,像pm.test()方法就可以用来定义测试用例,pm.expect()或者pm.response等对象能用来进行断言操作。而 Python 是一种独立的编程语言,其语法和运行环境与 Postman 内置的 JavaScript 环境不兼容。
如果你希望使用 Python 来进行接口测试和断言,可以借助 Python 的第三方库,如requests库用于发送 HTTP 请求,unittest或pytest库来编写和运行测试用例。下面是一个使用requests和pytest的示例:
python
import requests
def test_api():
url = 'https://api.example.com' # 替换为实际的接口URL
response = requests.get(url)
assert response.status_code == 200
# 可以添加更多断言,如响应体内容的检查
data = response.json()
assert 'key' in data
在上述代码里,使用requests库发送一个 GET 请求,然后用assert语句进行断言,判断响应状态码是否为 200,并且检查响应体中是否包含特定的键。你可以在终端中运行pytest命令来执行这个测试用例。
将 Postman 和 Python 结合使用:
1. 导出 Postman 集合为 Python 代码
Postman 支持将请求集合导出为多种编程语言的代码,其中就包括 Python。通过这种方式,你可以快速获得请求的 Python 代码示例,然后根据需求进行修改和扩展。
- 操作步骤:
- 在 Postman 中打开你要导出的集合或请求。
- 点击请求旁边的 “Code” 按钮。
- 在弹出的窗口中选择 “Python - requests” 作为目标语言。
- Postman 会生成对应的 Python 代码,你可以将其复制到你的 Python 项目中。
2. 使用 Newman 与 Python 脚本集成
Newman 是 Postman 官方提供的命令行工具,可用于运行 Postman 集合。你可以在 Python 脚本中调用 Newman 命令来执行 Postman 集合。
- 操作步骤:
- 安装 Newman:在命令行中运行
npm install -g newman进行安装。 - 编写 Python 脚本:使用
subprocess模块调用 Newman 命令。
- 安装 Newman:在命令行中运行
下面是一个简单的 Python 脚本示例:
python
import subprocess
# 定义 Postman 集合文件路径和环境文件路径
collection_path = 'path/to/your/collection.json'
environment_path = 'path/to/your/environment.json'
# 构建 Newman 命令
command = f'newman run {collection_path} -e {environment_path}'
try:
# 执行命令并捕获输出
result = subprocess.run(command, shell=True, check=True, text=True, capture_output=True)
print('Newman 执行成功:')
print(result.stdout)
except subprocess.CalledProcessError as e:
print('Newman 执行失败:')
print(e.stderr)
在上述代码中,你需要将 collection_path 和 environment_path 替换为实际的 Postman 集合文件和环境文件的路径。
3. 使用 Python 模拟 Postman 的功能
如果你只需要部分 Postman 的功能,也可以使用 Python 的 requests 库来模拟发送 HTTP 请求,并使用 unittest 或 pytest 等测试框架编写测试用例。
- 示例代码:
python
import requests
import unittest
class TestAPI(unittest.TestCase):
def test_get_request(self):
url = 'https://api.example.com' # 替换为实际的 API URL
response = requests.get(url)
self.assertEqual(response.status_code, 200)
if __name__ == '__main__':
unittest.main()
在这个示例中,使用 requests 库发送一个 GET 请求,并使用 unittest 框架编写了一个简单的测试用例,验证响应状态码是否为 200。
通过以上几种方式,你可以灵活地将 Postman 和 Python 结合使用,充分发挥两者的优势。
更多推荐



所有评论(0)