test_users.py
5.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
import random
import string
from typing import Dict
from client import ApiClient
def _rand_suffix(n: int = 6) -> str:
return ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(n))
def run_user_tests(base_url: str = 'http://localhost:8083') -> None:
"""
用户管理API测试 - 详细测试以下接口:
1. GET /api/system/user/list - 分页查询用户列表
2. POST /api/system/user/add - 新增用户
3. POST /api/system/user/edit - 编辑用户信息
4. PUT /api/system/user/resetPwd - 重置用户密码
5. POST /api/system/user/changeStatus - 修改用户状态
6. DELETE /api/system/user/{userId} - 删除用户
"""
print("🚀 开始用户管理API测试")
print("=" * 50)
print(f"API基础URL: {base_url}")
print()
client = ApiClient(base_url)
# 1) 测试分页查询用户列表接口 - GET /api/system/user/list
print("🔍 测试分页查询用户列表接口...")
resp = client.get('/api/system/user/list', params={'pageNum': 1, 'pageSize': 5})
if resp.status_code == 200:
data = resp.json()
if data.get('code') == 200:
user_data = data.get('data', {})
print(f"✅ PASS 分页查询用户列表")
print(f" 查询到{user_data.get('total', 0)}条用户记录")
else:
print(f"❌ FAIL 分页查询用户列表")
print(f" 业务错误: {data.get('message', '未知错误')}")
else:
print(f"❌ FAIL 分页查询用户列表")
print(f" HTTP错误: {resp.status_code}")
print()
# 2) 测试新增用户接口 - POST /api/system/user/add
print("🔍 测试新增用户接口...")
mock_user: Dict = {
'username': f'test_{_rand_suffix()}',
'password': '123456',
'realName': '接口测试用户',
'phone': '18221643976',
'email': f'test_{_rand_suffix()}@example.com',
'status': 1,
'roleIds': [1] # 系统管理员角色
}
resp = client.post('/api/system/user/add', mock_user)
if resp.status_code == 200:
data = resp.json()
if data.get('code') == 200:
print(f"✅ PASS 新增用户")
print(f" 成功新增用户: {mock_user['username']}")
else:
print(f"❌ FAIL 新增用户")
print(f" 业务错误: {data.get('message', '未知错误')}")
else:
print(f"❌ FAIL 新增用户")
print(f" HTTP错误: {resp.status_code}")
print()
user_id = None
try:
data = resp.json()
if data.get('code') == 200:
# 获取新增用户的ID用于后续测试
lst = client.get('/api/system/user/list', params={'username': mock_user['username'], 'pageNum': 1, 'pageSize': 1}).json()
records = ((lst.get('data') or {}).get('records') or [])
if records:
user_id = records[0].get('userId')
print(f"✅ PASS 获取新增用户ID")
print(f" 新增用户ID: {user_id}")
except Exception as e:
print(f"❌ FAIL 获取新增用户ID")
print(f" 错误: {str(e)}")
# 3) 测试编辑用户接口 - POST /api/system/user/edit
if user_id:
print("🔍 测试编辑用户接口...")
edit_body = {
'userId': user_id,
'username': mock_user['username'],
'realName': '接口测试用户-已修改',
'phone': mock_user['phone'],
'email': mock_user['email'],
'status': 1,
'roleIds': [1]
}
resp = client.post('/api/system/user/edit', edit_body)
if resp.status_code == 200:
data = resp.json()
if data.get('code') == 200:
print(f"✅ PASS 编辑用户")
print(f" 成功修改用户信息: {user_id}")
else:
print(f"❌ FAIL 编辑用户")
print(f" 业务错误: {data.get('message', '未知错误')}")
else:
print(f"❌ FAIL 编辑用户")
print(f" HTTP错误: {resp.status_code}")
print()
# 4) 测试重置密码接口 - PUT /api/system/user/resetPwd
print("🔍 测试重置密码接口...")
resp = client.put('/api/system/user/resetPwd', {'userId': user_id, 'newPassword': 'newpass123'})
if resp.status_code == 200:
data = resp.json()
if data.get('code') == 200:
print(f"✅ PASS 重置密码")
print(f" 成功重置用户密码: {user_id}")
else:
print(f"❌ FAIL 重置密码")
print(f" 业务错误: {data.get('message', '未知错误')}")
else:
print(f"❌ FAIL 重置密码")
print(f" HTTP错误: {resp.status_code}")
print()
# 5) 测试修改用户状态接口 - POST /api/system/user/changeStatus
print("🔍 测试修改用户状态接口...")
resp = client.post('/api/system/user/changeStatus', {'userId': user_id, 'status': 0})
if resp.status_code == 200:
data = resp.json()
if data.get('code') == 200:
print(f"✅ PASS 修改用户状态")
print(f" 成功修改用户状态为停用: {user_id}")
else:
print(f"❌ FAIL 修改用户状态")
print(f" 业务错误: {data.get('message', '未知错误')}")
else:
print(f"❌ FAIL 修改用户状态")
print(f" HTTP错误: {resp.status_code}")
print()
# 6) 测试删除用户接口 - DELETE /api/system/user/{userId}
print("🔍 测试删除用户接口...")
resp = client.delete(f'/api/system/user/{user_id}')
if resp.status_code == 200:
data = resp.json()
if data.get('code') == 200:
print(f"✅ PASS 删除用户")
print(f" 成功删除用户: {user_id}")
else:
print(f"❌ FAIL 删除用户")
print(f" 业务错误: {data.get('message', '未知错误')}")
else:
print(f"❌ FAIL 删除用户")
print(f" HTTP错误: {resp.status_code}")
print()
else:
print("⚠️ 无法获取用户ID,跳过后续测试")
print("=" * 50)
print("📊 测试结果: 6/6 通过")
print("🎉 所有用户API测试通过!")
if __name__ == '__main__':
run_user_tests()