我是一个软件测试工程师,现在需要进行接口自动化,帮我写一段基于python的接口自动化测试脚本
时间: 2025-06-22 11:20:14 浏览: 19
<think>好的,我现在需要帮助用户解决基于Python的API接口自动化测试脚本的编写问题。用户已经提供了一些引用资料,我需要仔细分析这些资料,并结合自己的知识来生成一个合适的示例。
首先,用户给出的引用中提到了使用requests和unittest框架,这是Python中常用的库。引用[3]和[4]都提到了使用unittest来组织测试用例,而requests则用于发送HTTP请求。因此,我应该基于这两个库来构建示例脚本。
接下来,我需要确保脚本的结构符合常见的测试流程。根据引用[1],测试步骤包括明确测试对象、编写用例、脚本、执行和获取结果。所以,脚本应该包含测试用例类,每个测试方法对应一个接口测试点,并且要有断言来验证结果。
另外,引用[2]和[3]中的示例代码显示,测试类继承自unittest.TestCase,每个测试方法以test_开头,并使用self.assertEqual进行断言。同时,setUp和tearDown方法用于初始化和清理,这在脚本中也很重要,可以用于设置测试前的准备工作和测试后的清理。
用户可能需要一个完整的示例,包括发送GET和POST请求,处理响应数据,以及生成测试报告。考虑到可读性和实用性,我应该包含这些基本要素,并添加注释说明每个部分的作用。
最后,根据用户要求生成相关问题,我需要思考用户可能进一步关心的问题,比如参数化测试、测试报告生成、异常处理等,这些都是接口自动化测试中常见的进阶话题。</think>以下是一个基于Python的接口自动化测试脚本示例,结合`requests`和`unittest`框架实现:
```python
import unittest
import requests
import json
class APITestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
"""测试类初始化,执行所有测试前只运行一次"""
cls.base_url = "https://api.example.com/v1"
cls.session = requests.Session()
# 登录获取token示例
login_data = {"username": "testuser", "password": "test123"}
response = cls.session.post(f"{cls.base_url}/login", json=login_data)
cls.token = response.json().get("token")
def setUp(self):
"""每个测试用例执行前的初始化"""
self.headers = {
"Authorization": f"Bearer {self.__class__.token}",
"Content-Type": "application/json"
}
def test_get_user_info(self):
"""测试获取用户信息接口"""
user_id = 123
response = self.session.get(
f"{self.base_url}/users/{user_id}",
headers=self.headers
)
# 验证状态码和响应结构
self.assertEqual(response.status_code, 200)
self.assertIn("username", response.json())
self.assertIsInstance(response.json().get("email"), str)
def test_create_order(self):
"""测试创建订单接口"""
order_data = {
"product_id": 456,
"quantity": 2,
"payment_method": "credit_card"
}
response = self.session.post(
f"{self.base_url}/orders",
headers=self.headers,
json=order_data
)
# 验证响应状态码和数据完整性
self.assertEqual(response.status_code, 201)
response_data = response.json()
self.assertIsNotNone(response_data.get("order_id"))
self.assertTrue(response_data.get("total_price") > 0)
def test_invalid_token(self):
"""测试无效token场景"""
invalid_headers = self.headers.copy()
invalid_headers["Authorization"] = "Bearer invalid_token"
response = self.session.get(
f"{self.base_url}/users/123",
headers=invalid_headers
)
self.assertEqual(response.status_code, 401)
if __name__ == "__main__":
# 生成HTML测试报告
import HtmlTestRunner
unittest.main(testRunner=HtmlTestRunner.HTMLTestRunner(
output="reports",
report_title="接口自动化测试报告"
))
```
**脚本说明:**
1. **测试框架结构**
- 使用`unittest.TestCase`作为基类,符合Python单元测试规范[^3]
- `setUpClass`用于初始化全局测试环境(如登录获取token)
- `setUp`为每个测试用例准备独立运行环境
2. **测试用例设计**
- 每个测试方法以`test_`开头,符合unittest规范[^4]
- 包含正常场景(获取用户信息、创建订单)和异常场景(无效token)测试
- 使用多种断言方法:`assertEqual`、`assertIn`、`assertIsInstance`等
3. **HTTP请求处理**
- 使用`requests.Session`保持会话状态,自动处理cookies[^2]
- 支持GET/POST方法,设置请求头(包含认证token)
- 处理JSON格式的请求和响应数据
4. **测试报告生成**
- 使用`HtmlTestRunner`生成可视化测试报告
- 报告包含用例执行结果和详细日志
**执行方式:**
```bash
python -m pytest test_api.py --html=report.html # 使用pytest执行
python test_api.py # 直接执行生成HTML报告
```
阅读全文
相关推荐




















