QA 중니어 Log
[QA] 웹 서비스 자동화 Pipeline 구축 4 - 테스트 결과 보고서 본문
이제 테스트 결과 보고만 남았다!
(물론 이후에 필요한 것들을 추가, 추가 해야겠지만)
이번 글에서는 Jenkins로 빌드 시작! 하면 Allure Report로 테스트 결과 보고서를 자동 생성하려고 한다.
아래 그림에서는 5번!

이번 글의 목표
- 테스트 수행 결과를 Report로 만들기
- 아래 3개 결과를 비교해보기
> Jenkins 기본 콘솔 결과
> Pytest 리포트
> Allure Report 리포트
필요한 작업 정리
- pytest 설치
- Allure Report 설치
- Jenkins에서 Report까지 하나의 흐름으로 구성
- 전체 흐름 테스트
1. Jenkins 기본 콘솔 결과
- 별도 작업 없이, Jenkins에서 빌드를 실행한 기록이 있으면 Console Output 확인이 가능하다.
- [Job 클릭 > Builds 내역 클릭 > Console Output 클릭]

- 엄청 친절하지는 않지만, 지금까지 Pipeline을 만들면서 Jenkins 콘솔 결과를 보고 어떤 부분이 문제인지를 빠르게 알 수 있었다.
- 다만 테스트케이스를 실행한 결과 리포트로 사용하기에는 정리 등의 이중 작업이 필요하다.

2. Pytest HTML 리포트 생성
- Pytest로도 HTML 리포트를 생성할 수 있다.
1) Pytest 설치
pip install pytest pytest-html
2) login_test.py 수정 (테스트 함수 추가)
- pytest를 사용하려면 함수 이름이 test_로 시작해야 하고, assert 문이 있어야 테스트로 간주한다.
[변경 내용]
- login() 함수에는 맨 마지막에 return True 추가
- 기존에는 main() 함수를 만들었는데, test_로 시작하는 test_login 함수로 바꿈
- assert success > success가 True면 테스트 통과, False나 None 등의 값이면 테스트 실패로 간주
import os
import time
import pytest
from playwright.sync_api import sync_playwright, TimeoutError as PlaywrightTimeoutError
.
.
.
@pytest.mark.login
def test_login():
with sync_playwright() as p:
print(f"[{timestamp()}] 🚀 브라우저 실행 (headless={HEADLESS_MODE})")
browser = p.chromium.launch(headless=HEADLESS_MODE, slow_mo=300)
context = browser.new_context(ignore_https_errors=True)
page = context.new_page()
success = login(page)
browser.close()
assert success, "로그인 테스트 실패"
3) pytest.ini 파일 추가
- 위 코드에서 @pytest.mark.login 은 Pytest의 marker 기능을 사용한 것이다.
- 특정 테스트를 식별하거나 그룹화 할 때 사용하는데, 사용하려면 pytest.ini 파일에 마커를 등록해야 한다.
# playwright-tests/pytest.ini
[pytest]
markers =
login: 로그인 테스트
smoke : 핵심 기능에 대한 스모크 테스트
regression : 회귀 테스트
slow : 실행 시간이 긴 테스트
api : API 테스트
- 이렇게 마커로 등록해두면, pytest -m login 과 같이 특정 마커가 붙은 테스트만 실행할 수 있어서 편리하다.
- 등록된 마커 목록을 확인하려면 아래 명령어를 실행하면 된다.
pytest --markers
4) 디렉토리 구조
- 여기까지 하면, 아래 사진과 같은 디렉토리 구조를 확인할 수 있다.

- auto_tests (tests로 변경)
> 이 디렉토리에 테스트 스크립트를 계속 추가할 예정
> Playwright가 테스트 파일로 인식하는 기본 경로가 tests/ 디렉토리라서 이름을 다시 tests로 변경했음
- package.json & package-lock.js
> Node.js 프로젝트의 핵심 파일
> Python 기반 자동화라 하더라도 Playwright가 Node.js 기반 도구라서 패키지가 필요한 경우가 있기에 자동 생성됨
- pytest.ini
> 마커를 등록하기 위한 파일
- screenshots
> 사용하지 말지 아직 고민되지만, 오류 발생 시 screenshot을 찍어서 남길 경우를 위해서 만들어둠
5) Pytest 보고서 생성하기
cd /tmp/playwright-tests
pytest auto_tests/ --html=report.html --self-contained-html

- login_test.py가 실행되고 report.html 파일이 만들어졌다!

3. Playwright HTML 리포트 생성 (JS에서만 가능)
- Playwright로 테스트를 실행할 때, pytest 기반으로 테스트하면 HTML 리포트를 자동 생성할 수 있다.
- 이건 만들고 싶었는데, JavaScript 기반 프로젝트에서만 가능해서 Pass... ㅠㅠ
- 뭐든 default 언어나 환경이 제약 없이 잘 돌아간다는걸 또 한 번 느낌
4. Allure 리포트 생성
- pytest + allure-pytest 플러그인으로 그래픽 기반 리포트를 만들 수 있다.
1) Allure 패키지 설치
pip install allure-pytest
2) Allure CLI 설치
- Allure CLI는 리포트 생성과 뷰어 역할을 한다.
① 아래 주소에서 운영체제에 맞는 파일을 다운로드 받는다.
https://github.com/allure-framework/allure2/releases
Releases · allure-framework/allure2
Allure Report is a flexible, lightweight multi-language test reporting tool. It provides clear graphical reports and allows everyone involved in the development process to extract the maximum of in...
github.com
② 압축 해제 후, 실행 파일 경로를 PATH에 추가
# 압축 해제
tar -zxvf allure-2.34.1.tgz
# 실행파일 경로 추가
export PATH=$PATH:/home/automation/allure-2.34.1/bin
③ pytest 실행 시, Allure 결과 디렉토리 지정
pytest --alluredir=allure-results
④ Allure 리포트 생성
# Pytest 실행하여 Allure 결과 저장
pytest tests/ --alluredir=allure-results
# Allure 정적 리포트 생성
/home/automation/allure-2.34.1/bin/allure generate allure-results --clean -o allure-report
# 외부에서 접속 가능한 웹 서버로 실행
/home/automation/allure-2.34.1/bin/allure open -h 0.0.0.0 -p 8080 allure-report
- 8080 포트로 열어줬으니, [테스트 서버 IP]:8080으로 이동하면 결과를 확인할 수 있다.

- 이렇게 상세 결과도 확인 가능!

5. Jenkins와 연동
- Allure Report가 좋아보여서, Jenkins와 연동하려고 한다.
① Jenkins에 Allure Plugin 설치

② Jenkins 서버에 Allure CLI 설치 및 경로 설정
# 설치 파일 압축 해제
tar -zxvf allure-2.34.1.tar.gz
# 심볼릭 링크 생성
sudo ln -s /home/automation/allure-2.34.1/bin/allure /usr/local/bin/allure
③ Jenkins에 Allure Commandline 등록하기
- [Dashboard > Jenkins 관리 > Tools] 이동 후 Allure Commandline installations 섹션 찾기
- 아래와 같이 등록
> Name : allure
> Path : /home/automation/allure-2.34.1 (설치한 경로)

④ Jenkins Pipeline 업데이트
- 이제 마지막! Jenkins Pipeline 내용을 업데이트 해주면 된다.
- 추가해야 할 내용
> pytest + allure 결과 저장
> Allure 결과 Jenkins 서버로 가져오기 (선택사항)
> Allure 리포트 생성 및 확인
stages {
stage('Playwright 테스트 실행 (원격)') {
steps {
script {
sh """
ssh -o StrictHostKeyChecking=no -p ${SSH_PORT} ${REMOTE_USER}@${TARGET_SERVER} 'bash -s' <<'EOF'
set -e
export TARGET_URL="${TARGET_URL}"
export LOGIN_USERNAME="${LOGIN_USERNAME}"
export LOGIN_PASSWORD="${LOGIN_PASSWORD}"
export TARGET_AFTER_LOGIN="${TARGET_AFTER_LOGIN}"
cd /tmp/playwright-tests
# pytest + allure 결과 저장
pytest tests/ --alluredir=allure-results
EOF
"""
}
}
}
stage('Allure 결과 가져오기') {
steps {
sh """
rm -rf allure-results
scp -P ${SSH_PORT} -r ${REMOTE_USER}@${TARGET_SERVER}:/tmp/playwright-tests/allure-results .
"""
}
}
stage('Allure 리포트 생성 확인') {
steps {
sh "/home/automation/allure-2.34.1/bin/allure generate -c -o allure-report"
echo "✅ Allure 결과 디렉토리 복사 완료. 리포트는 Post 단계에서 생성됩니다."
}
}
}
post {
always {
allure([
results: [[path: 'allure-results']]
])
}
}
}
이제 마지막으로 빌드를 실행해보자!
- 빌드 성공했고, Allure Report 이미지도 생겼다!

- Allure Report 이미지를 눌러보면, 이렇게 바로 이동된다.

드디어 완성!
이거를 기반으로 테스트 스위트, 테스트 케이스를 어떻게 관리할 건지 고민해봐야겠다.
이번 글의 목표
✔️ 테스트 수행 결과를 Report로 만들기
✔️ 아래 3개 결과를 비교해보기
✔️ Jenkins 기본 콘솔 결과
✔️ Pytest 리포트
✔️ Allure Report 리포트
필요한 작업 정리
✔️ pytest 설치
✔️ Allure Report 설치
✔️ Jenkins에서 Report까지 하나의 흐름으로 구성
✔️ 전체 흐름 테스트
앞으로 할 일들은 많겠지만, 일단 하나의 파이프라인을 만들었다는 것에 의의를 ㅎㅎ

'QA' 카테고리의 다른 글
| [Ubuntu] 우분투 24.04 Realtek LAN 드라이버 변경 방법 (r8125) (0) | 2025.09.03 |
|---|---|
| [QA] 웹 서비스 자동화 Pipeline 구축 3 - Playwright 설치 및 Jenkins에서 실행하기 (4) | 2025.07.29 |
| [Playwright] JavaScript, TypeScript 환경에서 Playwright 설치하기 (3) | 2025.07.25 |
| [QA] 웹 서비스 자동화 Pipeline 구축 2 - 대상 서버에 패키지 다운로드 및 설치 (2) | 2025.07.24 |
| [QA] 웹 서비스 자동화 Pipeline 구축 1 - Jenkins 설치 (4) | 2025.07.23 |