| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Flutter
- 코멘토실무PT
- 앱개발
- 하이브리드앱테스트
- 테스트자동화
- 웹ui자동화
- pytest
- LTE기초
- QA
- QA자동화
- 코딩
- HTML
- 무선통신
- DART
- testautomationuniversity
- 자동화테스트
- javascript
- HTTP
- 서평
- Python
- 코멘토
- 백준
- 코딩테스트
- ShareTechnote
- 감사일기
- Selenium
- QA자동화테스트
- 실무PT후기
- QA직무교육
- 카카오API
- Today
- Total
오예남
[Python] pytest 테스트 자동화 - pytest-html, pytest-cov, pytest-xdist 맛보기 본문

이전 글에서는 일부 테스트 함수들만 선택하여 테스트할 수 있는 pytest 필터링 옵션들을 알아보았습니다.
[Python] pytest 테스트 자동화 - 테스트 케이스 항목을 필터링하는 방법
이전 글에서는 pytest에서 제공하는 여러가지 옵션들을 알아보았습니다. [Python] 테스트 자동화 - pytest 명령어 옵션 사용하기이전 글에서는 pytest 만의 독보적인 기능 Fixture 함수에 대해 작성하였
ohyenam.tistory.com
오늘은 pytest에서 지원하는 Plugin 기능들을 몇가지 알아보도록 하겠습니다.
목차
- Plugin ?
- 테스트 결과 레포트를 HTML 파일로 만들어주는 pytest-html
- 코드 커버리지를 확인할 수 있는 pytest-cov
- 테스트를 병렬로 실행해주는 pytest-xdist
- pytest 가 unittest 보다 좋은 이유
Plugin ?
기본 프레임워크에서 제공하는 기능 외에, 추가로 더 많은 기능을 사용할 수 있도록 해주는 패키지를 플러그인이라고 부릅니다. pytest 는 테스트 함수를 찾아 실행하는 단순한 프레임워크지만, 여기에 플러그인을 추가하면 좀더 편리하게 사용할 수 있습니다.
사용자들에게 인기있는 몇가지 플러그인을 알아보겠습니다.
테스트 결과 레포트를 HTML 파일로 만들어주는 pytest-html
pytest 테스트 결과를 저장할 때, html 형식으로 보기 좋게 만들어주는 플러그인입니다.
pip install pytest-html
python -m pytest --html=report.html
pytest-html을 pip으로 설치하고, pytest 옵션 명령어로 넣어서 사용합니다.

pytest-html 플러그인을 사용하여 테스트 결과를 html로 저장하고 브라우저로 열어보았습다.
테스트 버전과 테스트 결과 요약내용이 정리된것을 볼 수 있습니다. 화려하진 않지만 필요한 정보들만 담겨있네요.
html 레포트에서 커스터마이징이 필요하다면, 아래 pytest-html docs 링크도 참고해주세요.
https://pytest-html.readthedocs.io/en/latest/
코드 커버리지를 확인할 수 있는 pytest-cov
Python에서 코드 테스트 커버리지를 측정하는 도구로 coverage.py가 있습니다. 예를 들어 테스트가 코드의 몇 %를 실행했는지 확인하여 어떤 코드가 테스트되지 않았는지 쉽게 확인할 수 있습니다.
이 도구를 pytest와 통합해주는 플러그인이 바로 pytest-cov 입니다.
pip install pytest-cov
python -m pytest --cov=stuff
플러그인을 설치하고 pytest 옵션으로 실행합니다.
===================================================== test session starts =====================================================
platform win32 -- Python 3.13.1, pytest-8.3.4, pluggy-1.5.0
rootdir: C:\Users\INNO\Python\Appium
configfile: pytest.ini
plugins: cov-6.0.0, html-4.1.1, metadata-3.1.1
collected 5 items
tests\test_accum.py ..... [100%]
---------- coverage: platform win32, python 3.13.1-final-0 -----------
Name Stmts Miss Cover
---------------------------------------
stuff\__init__.py 0 0 100%
stuff\accum.py 8 0 100%
---------------------------------------
TOTAL 8 0 100%
====================================================== 5 passed in 0.09s ======================================================
위와 같이 코드의 coverage가 100%임을 확인할 수 있습니다.
그리고 콘솔 뿐만 아니라 html 보고서로 저장도 가능합니다.
python -m pytest --cov=stuff --cov-report html
위 옵션을 사용하면 루트 폴더 경로에 htmlcov 폴더가 생성됩니다.
안에는 많은 파일이 있는데, class/function/file 별로 커버리지 레포트를 생성하고 있습니다.


테스트를 병렬로 실행해주는 pytest-xdist
기본적으로 pytest는 한번에 하나의 테스트를 실행하기때문에, 테스트가 많아질수록 실행 시간이 오래걸리게 됩니다.
이때, 테스트를 병렬로 실행해주는 pytest-xdist를 사용하면 테스트 실행시간을 단축할 수 있습니다.
pip install pytest-xdist
python -m pytest -n 3
플러그인을 설치하고 -n 옵션을 넣어 쉽게 사용할 수 있습니다.
다만 꼭 기억해야할 점은 테스트 간에 공유되는 리소스나 데이터가 없어야합니다. 예를 들어 모바일앱 UI 자동화 테스트는 각 테스트가 의존성이 높고 이전 테스트를 완료해야 다음 테스트로 넘어갈 수 있는 경우가 많기 때문에 병렬 실행이 불가능합니다.
그리고 테스트 환경의 성능을 확인해야합니다. 낮은 성능의 PC에서 병렬 실행 개수를 너무 높이면 성능이 저하될 수도 있습니다.
추가로, pytest-xdist를 사용하여 여러대의 단말에서 테스트를 분산 실행하는 기능도 제공합니다. 이 부분은 모바일 앱 테스트가 필요한 저에게 굉장히 매력적인데요. Appium에서 제공하는 Device parm 처럼 여러대의 단말에서 동시에 테스트할 수 있는 환경을 구성할 수 있습니다.
pytest 가 unittest 보다 좋은 이유
Django 같은 백엔드로 유명한 Python 프레임워크도 pytest 플러그인을 제공하여 테스트 통합을 쉽게 해주고 있습니다.
제가 Python의 기본 unittest 프레임워크 대신 pytest를 선택한 이유중 하나도 바로 이런 pytest의 확장성입니다.
다음번에는 xdist 플러그인으로 스마트폰 2대를 PC에 연결하여 동시 테스트하는 모습을 공유드리겠습니다.
위 내용은 Test Automation University - Pytest 강의 내용을 정리하고, 추가로 이해한 내용을 작성한 게시물임을 참고 부탁드립니다.
Chapter 9 - Plugins
testautomationu.applitools.com
'Pytest' 카테고리의 다른 글
| [Python] Pytest - Playwright 로 웹 UI 테스트 자동화하기 (원티드 로그인 페이지) (0) | 2025.02.23 |
|---|---|
| [Python] Pytest로 간단하게 API 테스트 자동화하기 (0) | 2025.02.12 |
| [Python] pytest 테스트 자동화 - 테스트 케이스 항목을 필터링하는 방법 (0) | 2025.02.08 |
| [Python] 테스트 자동화 - pytest 명령어 옵션 사용하기 (0) | 2025.02.07 |
| [Python] pytest 테스트 자동화 - 픽스처(Fixture) 함수 사용하기 (0) | 2025.02.05 |