test_main.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. """CLI 离线模式测试。"""
  2. from pathlib import Path
  3. from main import main
  4. def test_audit_only_runs_without_llm_key(tmp_path, capsys) -> None:
  5. requirement_file = tmp_path / "requirement.txt"
  6. requirement_file.write_text("面向学生做学习工具,希望两周完成。", encoding="utf-8")
  7. exit_code = main(["--input", str(requirement_file), "--audit-only"])
  8. captured = capsys.readouterr()
  9. assert exit_code == 0
  10. assert '"coverage_percent"' in captured.out
  11. assert "需求完整度初检" in captured.out
  12. def test_cli_reports_missing_input(capsys) -> None:
  13. exit_code = main(["--input", "definitely-not-existing.txt", "--audit-only"])
  14. captured = capsys.readouterr()
  15. assert exit_code == 2
  16. assert "找不到输入文件" in captured.err
  17. def test_cli_reports_directory_as_invalid_input(tmp_path, capsys) -> None:
  18. exit_code = main(["--input", str(tmp_path), "--audit-only"])
  19. captured = capsys.readouterr()
  20. assert exit_code == 2
  21. assert "无法读取输入文件" in captured.err
  22. def test_cli_reports_missing_llm_config(monkeypatch, capsys) -> None:
  23. for name in ("LLM_MODEL_ID", "LLM_API_KEY", "LLM_BASE_URL"):
  24. monkeypatch.delenv(name, raising=False)
  25. exit_code = main([])
  26. captured = capsys.readouterr()
  27. assert exit_code == 2
  28. assert "缺少 LLM 配置" in captured.err