在Python中做API接口功能测试,本质是用程序模拟客户端请求并验证服务端响应是否符合预期。相比手工用工具点选,脚本方式更利于回归和自动化。

一、基础请求与状态码校验
使用requests库可以非常简洁地发起GET或POST请求。功能测试的第一步通常是确认接口能正常返回200,以及必要的响应头。
import requests
def test_get_user():
url = 'https://ipipp.com/api/user/1'
resp = requests.get(url, timeout=5)
# 校验HTTP状态码
assert resp.status_code == 200, '期望状态码200,实际为' + str(resp.status_code)
# 校验内容类型
assert 'application/json' in resp.headers.get('Content-Type', '')
test_get_user()
二、响应体与业务字段断言
仅看状态码不够,还要确认返回的数据结构正确。下面示例对JSON中的业务字段做断言。
import requests
def test_user_data():
url = 'https://ipipp.com/api/user/1'
resp = requests.get(url)
data = resp.json()
# 关键字段不能缺失
assert 'id' in data
assert 'name' in data
# 业务规则校验
assert data['id'] == 1
assert isinstance(data['name'], str) and len(data['name']) > 0
test_user_data()
三、异常参数与错误处理测试
功能测试也要覆盖异常输入,验证接口是否返回合理错误而非崩溃。
import requests
def test_invalid_param():
url = 'https://ipipp.com/api/user/abc'
resp = requests.get(url)
# 错误参数应返回4xx
assert resp.status_code in (400, 404)
body = resp.json()
assert 'error' in body
test_invalid_param()
四、用表格管理多组用例
当用例变多时,可以用数据驱动方式批量执行,提升可维护性。
| 用例名 | 用户ID | 期望状态码 |
|---|---|---|
| 正常用户 | 1 | 200 |
| 不存在用户 | 9999 | 404 |
| 非法ID | abc | 400 |
import requests
cases = [
('正常用户', 1, 200),
('不存在用户', 9999, 404),
('非法ID', 'abc', 400),
]
def run_cases():
for name, uid, expect in cases:
resp = requests.get('https://ipipp.com/api/user/' + str(uid))
assert resp.status_code == expect, name + '失败'
print(name, '通过')
run_cases()
五、小结
Python调用API做功能测试并不复杂,核心就是发请求、拿响应、写断言。把用例脚本化后,可以随时重跑,也能接进持续集成,比纯手工验证更可靠。