본문 바로가기

QA/Selenium

pytest 로 웹자동화 시작하기

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분기까지 케이스 코드를 짜야해서 일단 이슈 코드 짜고 ,,, 나중에 생각해봐야겠다 

주말 반납 이슈 .....