接口自动化测试用例通常包含以下要素:
-
用例ID:
- 唯一标识符,便于追踪和管理。
-
用例名称:
- 简要描述测试目的。
-
接口信息:
- URL:接口地址。
- 请求方法:如GET、POST、PUT、DELETE等。
-
请求参数:
- Headers:如Content-Type、Authorization等。
- Query Parameters:GET请求中的查询参数。
- Body:POST/PUT请求的请求体,通常为JSON或XML。
-
预期结果:
- 状态码:如200、404、500等。
- 响应数据:预期的JSON/XML结构及内容。
- 响应时间:接口的最大响应时间。
-
前置条件:
- 测试执行前的必要步骤,如登录、数据准备等。
-
后置条件:
- 测试执行后的清理步骤,如删除测试数据。
-
依赖关系:
- 与其他测试用例或数据的依赖。
-
测试数据:
- 测试所需的输入数据,如用户名、密码等。
-
执行步骤:
- 详细的操作步骤,如发送请求、验证响应等。
-
实际结果:
- 测试执行后的实际响应数据。
-
结果验证:
- 比较实际结果与预期结果,判断测试是否通过。
-
备注:
- 其他需要说明的信息,如特殊场景、已知问题等。
-
优先级:
- 测试用例的重要程度,如高、中、低。
-
自动化脚本:
- 实现该用例的自动化脚本或代码。
示例:
yaml
用例ID: TC001
用例名称: 验证用户登录接口
接口信息:
URL: /api/login
请求方法: POST
请求参数:
Headers:
Content-Type: application/json
Body:
username: testuser
password: testpass
预期结果:
状态码: 200
响应数据:
{
"status": "success",
"message": "Login successful"
}
响应时间: < 500ms
前置条件: 无
后置条件: 无
依赖关系: 无
测试数据:
username: testuser
password: testpass
执行步骤:
1. 发送POST请求到/api/login
2. 验证状态码为200
3. 验证响应数据包含"status": "success"
实际结果:
状态码: 200
响应数据:
{
"status": "success",
"message": "Login successful"
}
结果验证: 通过
备注: 无
优先级: 高
自动化脚本: login_test.py
这些要素确保了测试用例的完整性和可执行性。
以下是一个使用Python和requests
库编写的简单接口自动化测试脚本示例,用于测试用户登录接口。假设接口的URL为http://example.com/api/login
,请求方法为POST,请求体为JSON格式。
示例脚本:login_test.py
python
import requests
import json
# 定义接口URL
url = "http://example.com/api/login"
# 定义请求头
headers = {
"Content-Type": "application/json"
}
# 定义请求体
payload = {
"username": "testuser",
"password": "testpass"
}
# 发送POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))
# 打印响应状态码和响应数据
print("Status Code:", response.status_code)
print("Response Data:", response.json())
# 验证状态码
assert response.status_code == 200, f"Expected status code 200, but got {response.status_code}"
# 验证响应数据
response_data = response.json()
assert response_data["status"] == "success", f"Expected status 'success', but got {response_data['status']}"
assert response_data["message"] == "Login successful", f"Expected message 'Login successful', but got {response_data['message']}"
# 验证响应时间
assert response.elapsed.total_seconds() < 0.5, f"Response time exceeded 500ms: {response.elapsed.total_seconds()}s"
print("Test passed!")
脚本说明:
-
导入库:
requests
:用于发送HTTP请求。json
:用于处理JSON数据。
-
定义接口URL:
url
:接口的完整URL。
-
定义请求头:
headers
:设置请求头,例如Content-Type
为application/json
。
-
定义请求体:
payload
:包含用户名和密码的JSON格式请求体。
-
发送POST请求:
- 使用
requests.post()
方法发送请求,并将请求体转换为JSON格式。
- 使用
-
打印响应信息:
- 打印状态码和响应数据,便于调试。
-
验证状态码:
- 使用
assert
语句验证状态码是否为200。
- 使用
-
验证响应数据:
- 验证响应数据中的
status
和message
字段是否符合预期。
- 验证响应数据中的
-
验证响应时间:
- 使用
response.elapsed.total_seconds()
获取响应时间,并验证是否小于500ms。
- 使用
-
输出测试结果:
- 如果所有断言通过,则打印
Test passed!
。
- 如果所有断言通过,则打印
运行脚本:
-
确保已安装
requests
库:bashpip install requests
-
运行脚本:
bashpython login_test.py
输出示例:
如果测试通过,输出如下:
Status Code: 200
Response Data: {'status': 'success', 'message': 'Login successful'}
Test passed!
如果测试失败,assert
语句会抛出异常,并显示具体的失败原因。
这个脚本可以根据实际需求扩展,例如添加更多的测试用例、参数化测试数据、生成测试报告等。