Files
crewai/agents/qa_agent.py
ZhuJW 8584821f36 fix
2026-03-13 20:53:44 +08:00

128 lines
3.5 KiB
Python
Raw Permalink 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.

"""
QA Agent - 测试工程师智能体
负责根据 SRS 生成自动化测试用例Pytest 格式)
"""
from typing import Dict, Any
from crewai import Agent, Task
from models.qwen_config import get_llm
def create_qa_agent() -> Agent:
"""
创建测试工程师智能体
Returns:
Agent: QA 智能体实例
"""
return Agent(
role="高级测试架构师",
goal="根据软件需求规格说明书 (SRS) 设计并生成完整的自动化测试用例",
backstory="""你是一位拥有 8 年经验的高级测试架构师,擅长:
1. 基于需求文档设计全面的测试策略
2. 编写高质量的 Pytest 自动化测试脚本
3. 覆盖单元测试、集成测试、端到端测试
你的测试用例将作为开发实现的验证标准,务必保证覆盖率和可执行性。""",
verbose=True,
allow_delegation=False,
llm=get_llm()
)
def create_qa_task(srs_document: str) -> Task:
"""
创建测试用例生成任务
Args:
srs_document: 软件需求规格说明书
Returns:
Task: QA 任务实例
"""
return Task(
description=f"""
请根据以下 SRS 文档,生成完整的自动化测试用例:
【SRS 文档】
{srs_document}
【输出要求】
请按照以下结构输出测试方案:
## 1. 测试策略概述
- 1.1 测试范围
- 1.2 测试方法(单元测试/集成测试/E2E 测试)
- 1.3 测试工具和技术栈
## 2. 测试场景列表
- 2.1 功能测试场景(对应每个功能性需求)
- 2.2 边界值测试场景
- 2.3 异常场景测试
- 2.4 性能测试场景
## 3. Pytest 测试代码
为每个核心功能生成 Pytest 测试脚本,包含:
```python
# 测试文件test_<feature>.py
import pytest
class Test<Feature>:
\"\"\"<功能>测试类\"\"\"
def test_<scenario>_(self):
\"\"\"测试场景描述\"\"\"
# Arrange - 准备测试数据
# Act - 执行操作
# Assert - 验证结果
pass
```
## 4. 测试数据准备
- 4.1 测试 fixtures
- 4.2 Mock 数据
- 4.3 测试数据库种子
## 5. 测试执行说明
- 5.1 运行命令
- 5.2 环境要求
- 5.3 预期通过率
【注意事项】
- 遵循 AAA(Arrange-Act-Assert)测试模式
- 使用描述性的测试函数命名
- 包含充足的断言验证
- 考虑边界条件和异常情况
""",
expected_output="完整的测试方案和 Pytest 测试代码",
agent=create_qa_agent()
)
def execute_qa_stage(srs_document: str) -> Dict[str, Any]:
"""
执行 QA 阶段任务
Args:
srs_document: 软件需求规格说明书
Returns:
Dict[str, Any]: 包含测试方案和执行结果
"""
qa_agent = create_qa_agent()
qa_task = create_qa_task(srs_document)
crew = Crew(
agents=[qa_agent],
tasks=[qa_task],
verbose=True
)
result = crew.kickoff()
return {
"stage": "测试用例设计",
"test_plan": result.raw,
"status": "completed"
}