Files
FastDeploy/tests/ce/server/test_stream.py
YUNSHEN XIE 3a6058e445 Add stable ci (#3460)
* add stable ci

* fix

* update

* fix

* rename tests dir;fix stable ci bug

* add timeout limit

* update
2025-08-20 08:57:17 +08:00

63 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import json
from core import TEMPLATE, URL, build_request_payload, send_request
def test_stream_and_non_stream():
"""
测试接口在 stream 模式和非 stream 模式下返回的内容是否一致。
"""
# 构造 stream=True 的请求数据
data = {
"stream": True,
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "牛顿的三大运动定律是什么?"},
],
"max_tokens": 100,
}
# 构建请求 payload 并发送流式请求
payload = build_request_payload(TEMPLATE, data)
response = send_request(URL, payload)
# 按行解析流式响应
resp_chunks = []
for line in response.iter_lines():
if not line:
continue
decoded = line.decode("utf-8")
if decoded.startswith("data: "):
decoded = decoded[len("data: ") :]
if decoded == "[DONE]":
break
resp_chunks.append(json.loads(decoded))
# 拼接模型最终输出内容
final_content = "".join(
chunk["choices"][0]["delta"]["content"]
for chunk in resp_chunks
if "choices" in chunk and "delta" in chunk["choices"][0] and "content" in chunk["choices"][0]["delta"]
)
print(final_content)
# 修改为 stream=False发送普通请求
data["stream"] = False
payload = build_request_payload(TEMPLATE, data)
response = send_request(URL, payload)
# 打印格式化后的完整响应
print(json.dumps(response.json(), indent=2, ensure_ascii=False))
response_json = response.json()
# 对比两种模式下输出是否一致
assert final_content == response_json["choices"][0]["message"]["content"]
if __name__ == "__main__":
test_stream_and_non_stream()