4.2 KiB
phase, plan, type, wave, depends_on, files_modified, autonomous, requirements, user_setup, must_haves
| phase | plan | type | wave | depends_on | files_modified | autonomous | requirements | user_setup | must_haves | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 09-pipeline-integration | 00 | execute | 0 | true |
|
Purpose: 遵循 Nyquist 规则,测试先于实现,确保每个实现任务有对应的自动化验证 Output: 测试文件骨架和 mock fixtures
<execution_context> @/home/starmen1265/.claude/get-shit-done/workflows/execute-plan.md @/home/starmen1265/.claude/get-shit-done/templates/summary.md </execution_context>
@.planning/PROJECT.md @.planning/ROADMAP.md @.planning/STATE.md @.planning/phases/09-pipeline-integration/09-CONTEXT.md From kb_workflow/crawler/models.py: ```python class CrawlResult(BaseModel): success: bool content_type: str data: Optional[Union[AnswerData, ArticleData]] comments: Optional[List[CommentData]] error: Optional[str]class AnswerData(BaseModel): question_title: str question_description: Optional[str] answer_content: str author: AuthorInfo voteup_count: int comment_count: int created_time: int updated_time: Optional[int]
class ArticleData(BaseModel): title: str content: str author: AuthorInfo voteup_count: int comment_count: int created_time: int updated_time: Optional[int]
class CommentData(BaseModel): id: int content: str author: CommentAuthor vote_count: int created_time: int
From kb_workflow/auth/zhihu_login.py:
```python
class ZhihuLoginResult(BaseModel):
success: bool
cookie_str: Optional[str]
error: Optional[str]
class CookieValidationResult(BaseModel):
valid: bool
user_id: Optional[str]
error: Optional[str]
-
Mock fixtures:
mock_zhihu_answer_result: 模拟 ZhihuCrawler.crawl_answer() 返回的 CrawlResultmock_zhihu_zhuanlan_result: 模拟 ZhihuCrawler.crawl_article() 返回的 CrawlResultmock_comments_list: 模拟评论列表数据mock_zhihu_login_result: 模拟 ZhihuLogin.login_by_qrcode() 返回结果
-
测试用例骨架(使用 pytest.mark.skip 标记,等待实现后移除):
test_fetch_metadata_answer: 测试问答元数据获取test_fetch_metadata_article: 测试专栏文章元数据获取test_fetch_content_with_comments: 测试带评论的内容获取test_cookie_expired_triggers_login: 测试 Cookie 过期触发登录test_idempotent_execution: 测试幂等执行test_comment_formatting: 测试评论格式化
-
Mock 配置:
- 使用 pytest-mock 或 unittest.mock
- 配置 ZhihuCrawler mock 返回预期的 CrawlResult
- 配置 ZhihuLogin mock 返回预期的登录结果
文件末尾添加注释标记:
# WAVE_0_COMPLETE: Test scaffolding ready for implementation
<success_criteria>
- tests/test_platforms/test_zhihu.py 文件存在
- 包含 mock fixtures: mock_zhihu_answer_result, mock_zhihu_zhuanlan_result, mock_comments_list, mock_zhihu_login_result
- 包含测试骨架: test_fetch_metadata_answer, test_fetch_metadata_article, test_fetch_content_with_comments, test_cookie_expired_triggers_login, test_idempotent_execution, test_comment_formatting
- pytest 可以收集到所有测试用例 </success_criteria>