pytest 란 ?
python 코드를 단위테스트 하기위한 프레임워크로 test_ 로 시작하는 모든 파일을 로드하고, 실행하며 테스트 결과를 추출할 수 있다.
나는 셀레니움과 pytest 를 사용하여 웹자동화 코드를 구축하려고 한다.
pytest 및 플러그인 설치
우선, pytest 를 실행하기에 앞서 pytest 를 설치한다.
pip install pytest
나는 테스트 결과를 html 로 확인할거기 때문에 pytest-html 도 설치해줬다.
pip install pytest-html
pytest 실행
pytest 는 test_ 로 시작하는 모든 파일을 로드하고 실행하며 단순히 pytest 커맨드로 실행할 수 있으나 아래의 다양한 옵션을 사용할 수 있다.
1. 실행관련 옵션
* 모든 옵션은 pytest -[옵션명] 으로 부여가능
-v, --verbose : 테스트 실행 시 더 자세한 출력 정보를 제공
-q, --quiet : 테스트 실행 시 출력 정보를 간소화함 (-v와 반대)
tb=short, --tb=long, --tb=line, --tb=no :오류 발생 시 출력되는 트레이스백(traceback) 형식을 설정
-k EXPRESSION: 특정 테스트 이름이나 조건에 맞는 테스트만 실행합니다. EXPRESSION은 테스트 이름, 조건을 포함할 수 있음
-s : print 및 pytest가 표준 출력을 캡처하지 않고 그대로 터미널에 출력하도록 설정
2. 출력 관련 옵션
--disable-warnings:경고 메시지를 출력하지 않도록 설정
--html=FILE: HTML 형식으로 테스트 결과를 저장합니다. 이때 파일명을 지정해야 함 ex ) pytest --html=report.html
--junitxml=FILE : JUnit XML 형식으로 테스트 결과를 저장 ex) pytest --junitxml=result.xml
--capture=fd, --capture=sys, --capture=no:표준 출력을 캡처하는 방식을 설정
더 많은 옵션들이 많지만, 자주 사용하는 것만 작성했다,
나는 -s, -v 옵션과 html 로 report 를 출력할거기 때문에 아래의 커맨드를 사용하여 pytest 를 실행했다.
pytest -s -v --html=report.html
html 실행
pytest 실행 후, 테스트 결과가 html 로 생성되는데 이때 html 을 열면 보안문제로 detail 정보가 출력되지 않는 현상이 있다.
이 오류는 로컬 파일(file://) 환경에서 발생하는 보안 제한 때문에 나타나는데 나는 로컬 웹서버를 통해 위 오류를 해결했다.
1. 아래 명령어를 통해 로컬 웹서버를 시작
python -m http.server 8000
이후에 http://localhost:8000/report.html 로 접속하면 아래와 같이 디테일이 출력되는 것을 확인할 수 있다.
테스트케이스 결과를 뭔가 더 직관적으로 확인하고 싶은데 어떻게 하면 좋을까
우선 1분기까지 케이스 코드를 짜야해서 일단 이슈 코드 짜고 ,,, 나중에 생각해봐야겠다
주말 반납 이슈 .....
'QA > Selenium' 카테고리의 다른 글
셀레니움으로 웹사이트 접속 후 로그인까지 (0) | 2025.01.22 |
---|---|
셀레니움 사용 시 ChromeDriverManager 오류 해결 방법 (0) | 2025.01.22 |