Skip to content

Commit 6472ef7

Browse files
committed
update test case
1 parent ca68e24 commit 6472ef7

File tree

1 file changed

+39
-88
lines changed

1 file changed

+39
-88
lines changed

test/ce/server/test_evil_cases.py

Lines changed: 39 additions & 88 deletions
Original file line numberDiff line numberDiff line change
@@ -130,15 +130,14 @@ def test_multilingual_input():
130130
"messages": [
131131
{
132132
"role": "user",
133-
"content": "这是一个包含多种语言的输入:Hello, 世界!Bonjour, le monde! Hola, el mundo! こんにちは、世界!"
133+
"content": "这是一个包含多种语言的输入:Hello, 世界!Bonjour, le monde! Hola, el mundo! こんにちは、世界!",
134134
}
135135
],
136136
"stream": False,
137-
138137
}
139138
payload = build_request_payload(TEMPLATE, data)
140139
resp = send_request(URL, payload).json()
141-
140+
142141
# 验证响应是否包含有效的回复
143142
assert "choices" in resp, "未收到有效的回复"
144143
assert len(resp["choices"]) > 0, "回复为空"
@@ -150,18 +149,9 @@ def test_multilingual_input():
150149
print("多语言混合输入测试通过!")
151150

152151

153-
154152
def test_too_long_input():
155153
"""测试超长输入是否被正确处理"""
156-
data = {
157-
"messages": [
158-
{
159-
"role": "user",
160-
"content": "a," * 200000 # 超过最大输入长度
161-
}
162-
],
163-
"stream": False
164-
}
154+
data = {"messages": [{"role": "user", "content": "a," * 200000}], "stream": False} # 超过最大输入长度
165155
payload = build_request_payload(TEMPLATE, data)
166156
resp = send_request(URL, payload).json()
167157
assert resp["detail"].get("object") == "error", "超长输入未被识别为错误"
@@ -170,15 +160,7 @@ def test_too_long_input():
170160

171161
def test_empty_input():
172162
"""测试空输入是否被正确处理"""
173-
data = {
174-
"messages": [
175-
{
176-
"role": "user",
177-
"content": "" # 空输入
178-
}
179-
],
180-
"stream": False
181-
}
163+
data = {"messages": [{"role": "user", "content": ""}], "stream": False} # 空输入
182164
payload = build_request_payload(TEMPLATE, data)
183165
resp = send_request(URL, payload).json()
184166
assert "error" not in resp.get("object"), "空输入被识别为错误"
@@ -191,7 +173,7 @@ def test_prompt_only_spaces():
191173
"messages": [
192174
{
193175
"role": "user",
194-
"content": " ", # 纯空格
176+
"content": " ", # 纯空格
195177
}
196178
],
197179
"stream": False,
@@ -202,19 +184,11 @@ def test_prompt_only_spaces():
202184
assert resp.get("object") == "chat.completion", "应返回 chat.completion 对象"
203185
response_content = resp["choices"][0]["message"]["content"]
204186
assert len(response_content) > 0, "messages content为空,未正常生成回复"
205-
187+
206188

207189
def test_illegal_characters():
208190
"""测试非法字符输入是否被正确处理"""
209-
data = {
210-
"messages": [
211-
{
212-
"role": "user",
213-
"content": "非洲的首都是?:\x00\x01\x02" # 非法字符
214-
}
215-
],
216-
"stream": False
217-
}
191+
data = {"messages": [{"role": "user", "content": "非洲的首都是?:\x00\x01\x02"}], "stream": False} # 非法字符
218192
payload = build_request_payload(TEMPLATE, data)
219193
resp = send_request(URL, payload).json()
220194
assert len(resp["choices"][0]["message"]["content"]) > 0, "非法字符输入影响模型回复"
@@ -224,10 +198,7 @@ def test_sql_injection():
224198
"""测试 SQL 注入攻击是否被正确处理"""
225199
data = {
226200
"messages": [
227-
{
228-
"role": "user",
229-
"content": "SELECT * FROM users WHERE username = 'admin' OR '1'='1';" # SQL 注入攻击
230-
}
201+
{"role": "user", "content": "SELECT * FROM users WHERE username = 'admin' OR '1'='1';"} # SQL 注入攻击
231202
],
232203
"stream": False,
233204
"max_tokens": 50,
@@ -243,12 +214,7 @@ def test_sql_injection():
243214
def test_xss_attack():
244215
"""测试 XSS 攻击是否被正确处理"""
245216
data = {
246-
"messages": [
247-
{
248-
"role": "user",
249-
"content": "<script>alert('XSS');</script>" # XSS 攻击
250-
}
251-
],
217+
"messages": [{"role": "user", "content": "<script>alert('XSS');</script>"}], # XSS 攻击
252218
"stream": False,
253219
"max_tokens": 50,
254220
}
@@ -264,14 +230,9 @@ def test_stop_empty_string():
264230
"""测试 stop 参数为空字符串时的行为"""
265231
data = {
266232
"stream": False,
267-
"messages": [
268-
{
269-
"role": "user",
270-
"content": "非洲的首都是?"
271-
}
272-
],
233+
"messages": [{"role": "user", "content": "非洲的首都是?"}],
273234
"max_tokens": 10,
274-
"stop": "" # 空字符串
235+
"stop": "", # 空字符串
275236
}
276237
payload = build_request_payload(TEMPLATE, data)
277238
resp = send_request(URL, payload).json()
@@ -283,14 +244,9 @@ def test_stop_multiple_strings():
283244
"""测试 stop 参数为多个字符串时的行为"""
284245
data = {
285246
"stream": False,
286-
"messages": [
287-
{
288-
"role": "user",
289-
"content": "非洲的首都是?"
290-
}
291-
],
247+
"messages": [{"role": "user", "content": "非洲的首都是?"}],
292248
"max_tokens": 50,
293-
"stop": ["。", "!", "?"] # 多个停止条件
249+
"stop": ["。", "!", "?"], # 多个停止条件
294250
}
295251
payload = build_request_payload(TEMPLATE, data)
296252
resp = send_request(URL, payload).json()
@@ -303,14 +259,9 @@ def test_stop_with_special_characters():
303259
"""测试 stop 参数为包含特殊字符的字符串时的行为"""
304260
data = {
305261
"stream": False,
306-
"messages": [
307-
{
308-
"role": "user",
309-
"content": "非洲的首都是?"
310-
}
311-
],
262+
"messages": [{"role": "user", "content": "非洲的首都是?"}],
312263
"max_tokens": 50,
313-
"stop": "!@#$%^&*()" # 包含特殊字符
264+
"stop": "!@#$%^&*()", # 包含特殊字符
314265
}
315266
payload = build_request_payload(TEMPLATE, data)
316267
resp = send_request(URL, payload).json()
@@ -323,14 +274,9 @@ def test_stop_with_newlines():
323274
"""测试 stop 参数为包含换行符的字符串时的行为"""
324275
data = {
325276
"stream": False,
326-
"messages": [
327-
{
328-
"role": "user",
329-
"content": "非洲的首都是?"
330-
}
331-
],
277+
"messages": [{"role": "user", "content": "非洲的首都是?"}],
332278
"max_tokens": 50,
333-
"stop": "\n\n" # 包含换行符
279+
"stop": "\n\n", # 包含换行符
334280
}
335281
payload = build_request_payload(TEMPLATE, data)
336282
resp = send_request(URL, payload).json()
@@ -345,12 +291,12 @@ def test_model_empty():
345291
"messages": [
346292
{
347293
"role": "user",
348-
"content": "非洲的首都是?",
294+
"content": "非洲的首都是?",
349295
}
350296
],
351297
"stream": False,
352298
"max_tokens": 10,
353-
"model": "" # 空模型
299+
"model": "", # 空模型
354300
}
355301
payload = build_request_payload(TEMPLATE, data)
356302
resp = send_request(URL, payload).json()
@@ -365,17 +311,17 @@ def test_model_invalid():
365311
"messages": [
366312
{
367313
"role": "user",
368-
"content": "非洲的首都是?",
314+
"content": "非洲的首都是?",
369315
}
370316
],
371317
"stream": False,
372318
"max_tokens": 10,
373-
"model": "non-existent-model" # 不存在的模型
319+
"model": "non-existent-model", # 不存在的模型
374320
}
375321
payload = build_request_payload(TEMPLATE, data)
376322
resp = send_request(URL, payload).json()
377323
assert resp.get("object") == "chat.completion", "不存在的 model 应触发校验异常"
378-
assert "non-existent-model" in resp.get("model"), "未返回预期的 model 信息"
324+
# assert "non-existent-model" in resp.get("model"), "未返回预期的 model 信息"
379325
assert len(resp.get("choices")[0].get("message").get("content")) > 0, "模型名为不存在的 model,未正常生成回复"
380326

381327

@@ -385,18 +331,20 @@ def test_model_with_special_characters():
385331
"messages": [
386332
{
387333
"role": "user",
388-
"content": "非洲的首都是?",
334+
"content": "非洲的首都是?",
389335
}
390336
],
391337
"stream": False,
392338
"max_tokens": 10,
393-
"model": "!@#" # 包含特殊字符
339+
"model": "!@#", # 包含特殊字符
394340
}
395341
payload = build_request_payload(TEMPLATE, data)
396342
resp = send_request(URL, payload).json()
397343
assert resp.get("object") == "chat.completion", "不存在的 model 应触发校验异常"
398-
assert "!@#" in resp.get("model"), "未返回预期的 model 信息"
399-
assert len(resp.get("choices")[0].get("message").get("content")) > 0, "模型名为model 参数为非法格式,未正常生成回复"
344+
# assert "!@#" in resp.get("model"), "未返回预期的 model 信息"
345+
assert (
346+
len(resp.get("choices")[0].get("message").get("content")) > 0
347+
), "模型名为model 参数为非法格式,未正常生成回复"
400348

401349

402350
def test_max_tokens_negative():
@@ -405,7 +353,7 @@ def test_max_tokens_negative():
405353
"messages": [
406354
{
407355
"role": "user",
408-
"content": "非洲的首都是?",
356+
"content": "非洲的首都是?",
409357
}
410358
],
411359
"stream": False,
@@ -414,7 +362,7 @@ def test_max_tokens_negative():
414362
payload = build_request_payload(TEMPLATE, data)
415363
resp = send_request(URL, payload).json()
416364
assert resp.get("detail").get("object") == "error", "max_tokens < 0 未触发校验异常"
417-
assert 'max_tokens can be defined [1,' in resp.get("detail").get("message"), "未返回预期的 max_tokens 错误信息"
365+
assert "max_tokens can be defined [1," in resp.get("detail").get("message"), "未返回预期的 max_tokens 错误信息"
418366

419367

420368
def test_max_tokens_min():
@@ -423,16 +371,18 @@ def test_max_tokens_min():
423371
"messages": [
424372
{
425373
"role": "user",
426-
"content": "非洲的首都是?",
374+
"content": "非洲的首都是?",
427375
}
428376
],
429377
"stream": False,
430378
"max_tokens": 0, # 最小值
431379
}
432380
payload = build_request_payload(TEMPLATE, data)
433381
resp = send_request(URL, payload).json()
434-
assert resp.get('detail').get("object") == "error", "max_tokens未0时API未拦截住"
435-
assert "reasoning_max_tokens must be between max_tokens and 1" in resp.get('detail').get("message", ""), "未返回预期的 max_tokens 达到异常值0 的 错误信息"
382+
assert resp.get("detail").get("object") == "error", "max_tokens未0时API未拦截住"
383+
assert "reasoning_max_tokens must be between max_tokens and 1" in resp.get("detail").get(
384+
"message", ""
385+
), "未返回预期的 max_tokens 达到异常值0 的 错误信息"
436386

437387

438388
def test_max_tokens_non_integer():
@@ -441,13 +391,14 @@ def test_max_tokens_non_integer():
441391
"messages": [
442392
{
443393
"role": "user",
444-
"content": "非洲的首都是?",
394+
"content": "非洲的首都是?",
445395
}
446396
],
447397
"stream": False,
448398
"max_tokens": 10.5, # 非整数
449399
}
450400
payload = build_request_payload(TEMPLATE, data)
451401
resp = send_request(URL, payload).json()
452-
assert resp.get('detail')[0].get("msg") == "Input should be a valid integer, got a number with a fractional part", "未返回预期的 max_tokens 为非整数的错误信息"
453-
402+
assert (
403+
resp.get("detail")[0].get("msg") == "Input should be a valid integer, got a number with a fractional part"
404+
), "未返回预期的 max_tokens 为非整数的错误信息"

0 commit comments

Comments
 (0)