This repository has been archived on 2026-08-07. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
kb-skills/.planning/phases/09-pipeline-integration/09-00-PLAN.md
T

4.2 KiB
Raw Blame History

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
truths artifacts key_links
测试脚手架已就绪,为 Wave 1 实现提供验证基础
path provides min_lines exports
tests/test_platforms/test_zhihu.py Test scaffolding for ZhihuAdapter 30
mock_zhihu_answer_result
mock_zhihu_zhuanlan_result
创建 Wave 0 测试脚手架,为后续实现任务提供验证基础。

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]
Task 0: Create test scaffolding and mock fixtures tests/test_platforms/test_zhihu.py 创建测试文件骨架,包含以下内容:
  1. Mock fixtures:

    • mock_zhihu_answer_result: 模拟 ZhihuCrawler.crawl_answer() 返回的 CrawlResult
    • mock_zhihu_zhuanlan_result: 模拟 ZhihuCrawler.crawl_article() 返回的 CrawlResult
    • mock_comments_list: 模拟评论列表数据
    • mock_zhihu_login_result: 模拟 ZhihuLogin.login_by_qrcode() 返回结果
  2. 测试用例骨架(使用 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: 测试评论格式化
  3. Mock 配置:

    • 使用 pytest-mock 或 unittest.mock
    • 配置 ZhihuCrawler mock 返回预期的 CrawlResult
    • 配置 ZhihuLogin mock 返回预期的登录结果

文件末尾添加注释标记:

# WAVE_0_COMPLETE: Test scaffolding ready for implementation
pytest tests/test_platforms/test_zhihu.py --collect-only -q 2>&1 | grep -c "test_" 测试文件存在,包含至少 6 个测试用例骨架和 4 个 mock fixtures 测试骨架已创建,测试可以被 pytest 收集(即使被 skip)

<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>
After completion, create `.planning/phases/09-pipeline-integration/09-00-SUMMARY.md`