본문 바로가기
C.W.K.
Stream
Lesson 07 of 13 · published

테스트 리포팅

~11 min · reporting, junit, coverage

Level 0견습생
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

실패를 찾으려고 원시 로그를 읽지 마

CI의 기본 테스트 출력은 그저 콘솔에 쌓인 텍스트 덩어리일 뿐이야. 진짜 테스트 리포팅은 구조화된 데이터를 다뤄. 뭐가 통과했고, 뭐가 실패했고, 각각 얼마나 걸렸고, 어디서 깨졌는지 추출해서 PR이나 실행 요약에 올리는 거지.

두 가지 계층

1) 테스트 결과 포맷

  • JUnit XML — 범용 포맷. pytest --junitxml=report.xml, vitest --reporter=junit 등이 있어.
  • SARIF — 보안 스캐너용이며 PR 리뷰 UI에 표시돼.
  • Cobertura / lcov — 커버리지 포맷이야.

2) 렌더러

  • GitHub Step Summary — 어떤 단계에서든 $GITHUB_STEP_SUMMARY에 마크다운을 추가하면 실행 페이지에 렌더링돼.
  • PR 코멘트EnricoMi/publish-unit-test-result-action 같은 서드파티 액션이 테스트 실행 요약을 고정 코멘트로 남겨.
  • 커버리지 배지 — Codecov나 Coveralls로 푸시하면, 해당 액션도 PR에 코멘트를 달아줘.
  • 주석(Annotation) — 단계에서 ::error file=foo.py,line=12::message를 내보내면 GitHub가 PR diff에 인라인 주석을 그려줘.

Code

단계 요약 + JUnit + 주석·yaml
      - name: Run tests
        id: tests
        run: |
          pytest --junitxml=report.xml --cov=src --cov-report=term-missing | tee out.log

      - name: Append summary
        if: always()
        run: |
          echo '## Test summary' >> $GITHUB_STEP_SUMMARY
          tail -n 20 out.log >> $GITHUB_STEP_SUMMARY

      - name: Publish JUnit on PR
        if: always()
        uses: EnricoMi/publish-unit-test-result-action@v2
        with:
          files: report.xml

External links

Exercise

CI 워크플로를 가져와서 테스트 출력 마지막 30줄을 포함하는 단계 요약을 추가해. 최근 실행을 열어 요약이 정확히 렌더링되는지 확인해 봐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.