104 lines
3.6 KiB
Python
104 lines
3.6 KiB
Python
|
|
#!/usr/bin/env python3
|
|||
|
|
import requests
|
|||
|
|
import json
|
|||
|
|
import time
|
|||
|
|
|
|||
|
|
base_url = "http://127.0.0.1:5000"
|
|||
|
|
|
|||
|
|
def test_interview_flow():
|
|||
|
|
print("=== 测试面试完整流程 ===")
|
|||
|
|
|
|||
|
|
# 1. 开始面试
|
|||
|
|
print("\n1. 开始面试...")
|
|||
|
|
start_response = requests.post(
|
|||
|
|
f"{base_url}/api/interview/start",
|
|||
|
|
headers={"Content-Type": "application/json"},
|
|||
|
|
json={"job_position": "前端开发工程师", "difficulty": "medium"}
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
if start_response.status_code != 200:
|
|||
|
|
print(f"开始面试失败: {start_response.status_code}")
|
|||
|
|
print(start_response.text)
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
start_data = start_response.json()
|
|||
|
|
interview_id = start_data.get("interview_id")
|
|||
|
|
print(f"面试ID: {interview_id}")
|
|||
|
|
print(f"第一个问题: {start_data.get('question')}")
|
|||
|
|
|
|||
|
|
# 2. 回答第一个问题
|
|||
|
|
print("\n2. 回答第一个问题...")
|
|||
|
|
answer1 = "我有3年前端开发经验,熟悉React和Vue框架。"
|
|||
|
|
answer1_response = requests.post(
|
|||
|
|
f"{base_url}/api/interview/answer",
|
|||
|
|
headers={"Content-Type": "application/json"},
|
|||
|
|
json={"interview_id": interview_id, "answer": answer1, "request_feedback": False}
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
if answer1_response.status_code != 200:
|
|||
|
|
print(f"回答问题失败: {answer1_response.status_code}")
|
|||
|
|
print(answer1_response.text)
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
answer1_data = answer1_response.json()
|
|||
|
|
print(f"第二个问题: {answer1_data.get('question')}")
|
|||
|
|
|
|||
|
|
# 3. 回答第二个问题
|
|||
|
|
print("\n3. 回答第二个问题...")
|
|||
|
|
answer2 = "我在项目中使用过React Hooks,特别是useState、useEffect和useContext,能够有效管理组件状态和副作用。"
|
|||
|
|
answer2_response = requests.post(
|
|||
|
|
f"{base_url}/api/interview/answer",
|
|||
|
|
headers={"Content-Type": "application/json"},
|
|||
|
|
json={"interview_id": interview_id, "answer": answer2, "request_feedback": False}
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
if answer2_response.status_code != 200:
|
|||
|
|
print(f"回答问题失败: {answer2_response.status_code}")
|
|||
|
|
print(answer2_response.text)
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
answer2_data = answer2_response.json()
|
|||
|
|
|
|||
|
|
if answer2_data.get('ended'):
|
|||
|
|
print("面试结束")
|
|||
|
|
else:
|
|||
|
|
print(f"第三个问题: {answer2_data.get('question')}")
|
|||
|
|
|
|||
|
|
# 4. 生成面试反馈
|
|||
|
|
print("\n4. 生成面试反馈...")
|
|||
|
|
|
|||
|
|
# 构造对话历史
|
|||
|
|
conversation_history = [
|
|||
|
|
{"role": "assistant", "content": start_data.get('question')},
|
|||
|
|
{"role": "user", "content": answer1},
|
|||
|
|
{"role": "assistant", "content": answer1_data.get('question')},
|
|||
|
|
{"role": "user", "content": answer2}
|
|||
|
|
]
|
|||
|
|
|
|||
|
|
if not answer2_data.get('ended') and answer2_data.get('question'):
|
|||
|
|
conversation_history.append({"role": "assistant", "content": answer2_data.get('question')})
|
|||
|
|
|
|||
|
|
feedback_response = requests.post(
|
|||
|
|
f"{base_url}/api/interview/feedback",
|
|||
|
|
headers={"Content-Type": "application/json"},
|
|||
|
|
json={"interview_id": interview_id, "conversation_history": conversation_history}
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
if feedback_response.status_code != 200:
|
|||
|
|
print(f"生成反馈失败: {feedback_response.status_code}")
|
|||
|
|
print(feedback_response.text)
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
feedback_data = feedback_response.json()
|
|||
|
|
print("\n=== 面试反馈 ===")
|
|||
|
|
print(feedback_data.get('feedback', ''))
|
|||
|
|
|
|||
|
|
return True
|
|||
|
|
|
|||
|
|
if __name__ == "__main__":
|
|||
|
|
success = test_interview_flow()
|
|||
|
|
if success:
|
|||
|
|
print("\n=== 测试成功!完整的面试流程正常工作 ===")
|
|||
|
|
else:
|
|||
|
|
print("\n=== 测试失败!请检查相关代码 ===")
|