Python 테스트 프레임 워 크:pytest 학습 노트
pytest 는 매우 성숙 한 전 기능 의 Python 테스트 프레임 워 크 로 주로 다음 과 같은 몇 가지 특징 이 있 습 니 다.
간단 하고 유연 하 며 손 에 넣 기 쉽다.
파라미터 화 지원
report 프레임 워 크---allure 도 pytest 를 지원 합 니 다.
pytest 설치:
pip install -U pytest
설 치 된 버 전 검증:
pytest --version
pytest documentation 의 예:예 1:
import pytest
# content of test_sample.py
def func(x):
return x + 1
def test_answer():
assert func(3) == 5
명령 행 을 파일 이 있 는 디 렉 터 리 로 전환 하고 테스트 를 수행 합 니 다(IDE 에서 직접 실행 할 수도 있 습 니 다).이 테스트 는 func(3)가 5 를 되 돌려 주지 않 기 때문에 실패 보고 서 를 되 돌려 줍 니 다.
예 2:
여러 개의 테스트 샘플 을 작성 해 야 할 때,다음 과 같은 테스트 클래스 에 넣 을 수 있 습 니 다.
class TestClass:
def test_one(self):
x = "this"
assert 'h' in x
def test_two(self):
x = "hello"
assert hasattr(x, 'check')
다음 예 를 실행 합 니 다:테스트 결과 에서 볼 수 있 듯 이 이 테스트 는 모두 두 개의 테스트 사례 를 실 행 했 고 하 나 는 실패 하고 하 나 는 성공 했다.마찬가지 로 실패 사례 에 대한 상세 한 정보 와 집행 과정 에서 의 중간 결 과 를 볼 수 있 습 니 다.-q 즉-quiet,지루 함 을 줄 이 는 역할 을 합 니 다.구체 적 으로 pytest 버 전 정 보 를 보 여 주지 않 습 니 다.
pytest 테스트 샘플 을 어떻게 작성 합 니까?
위의 두 개의 인 스 턴 스 를 통 해 우 리 는 pytest 테스트 사례 를 작성 하 는 것 이 매우 간단 하 다 는 것 을 알 게 되 었 습 니 다.아래 의 규칙 에 따라 만:
테스트 파일 test첫머리test 엔 딩 도 가능 합 니 다.
테스트 클래스 는 Test 로 시작 하고 init 방법 을 가 져 갈 수 없습니다테스트 함수 test시작
Pytest 의 다양한 운행 모델 은 테스트 와 디 버 깅 을 더욱 원활 하 게 만 들 었 습 니 다.다음은 자주 사용 하 는 5 가지 모델 을 소개 합 니 다.소개 하기 전에 pytest 를 실행 할 때 현재 디 렉 터 리 와 하위 디 렉 터 리 에 있 는 모든 test *를 찾 습 니 다.py 또는*test.py 형식의 파일 과 test 로 시작 하 는 방법 이나 class,그렇지 않 으 면 실행 가능 한 케이스 를 찾 을 수 없 음 을 알려 줍 니 다.
1.실행 후 테스트 보고서 생 성(htmlReport)
pytest-html 설치:
pip install -U pytest-html
실행 모드:
pytest --html=report.html
보고 효과:상기 보고서 에서 테스트 결과 와 오류 원인 을 뚜렷하게 볼 수 있 고 포 지 셔 닝 문 제 는 매우 쉽다.
2.지정 한 케이스 실행
우리 가 비교적 많은 cases 를 썼 을 때 매번 한 번 씩 모두 운행 해 야 한다 면 시간 을 낭비 할 것 이 고 지 정 된 case 를 통 해 운행 하 는 것 이 편리 하 다.
예 코드:
class TestClassOne(object):
def test_one(self):
x = "this"
assert 't'in x
def test_two(self):
x = "hello"
assert hasattr(x, 'check')
class TestClassTwo(object):
def test_one(self):
x = "iphone"
assert 'p'in x
def test_two(self):
x = "apple"
assert hasattr(x, 'check')
실행 모드:모드 1:test 직접 실행se.py 파일 의 모든 케이스:
pytest test_se.py
모드 2:test 실행se.py 파일 의 TestClassOne 이 class 의 두 가지 케이스:
pytest test_se.py::TestClassOne
모드 3:test 실행se.py 파일 의 TestClass Two 이 class 의 testone:메모:class 를 정의 할 때 T 로 시작 해 야 합 니 다.그렇지 않 으 면 pytest 는 이 class 를 실행 하지 않 습 니 다.
3.다 중 프로 세 스 실행 케이스
cases 양 이 많 을 때 실행 시간 도 길 어 지고 스 크 립 트 가 실행 되 는 시간 을 단축 하려 면 다 중 프로 세 스 로 실행 할 수 있 습 니 다.
pytest-xdist 설치:
pip install -U pytest-xdist
실행 모드:
pytest test_se.py -n NUM
그 중에서 NUM 은 병렬 프로 세 스 수 를 작성 합 니 다.4.실행 케이스 다시 시도
인터페이스 테스트 를 할 때 일이 있 으 면 503 또는 짧 은 시간 에 네트워크 파동 을 만 나 케이스 운행 에 실패 할 수 있 습 니 다.이것 은 우리 가 기대 하 는 결과 가 아니 라 이 때 는 케이스 를 다시 실행 하 는 방식 으로 해결 할 수 있 습 니 다.
pytest-runfailures 설치:
pip install -U pytest-rerunfailures
실행 모드:
pytest test_se.py --reruns NUM
NUM 은 재 시도 횟수 를 기입 합 니 다.5.인쇄 내용 표시
테스트 스 크 립 트 를 실행 할 때 디 버 깅 이나 인쇄 를 위해 코드 에 print 내용 을 추가 하지만 pytest 를 실행 할 때 이 내용 은 표시 되 지 않 습 니 다.-s 를 끼 면 표시 할 수 있 습 니 다.
실행 모드:
pytest test_se.py -s
또한 pytest 의 다양한 실행 모드 는 겹 쳐 서 실행 할 수 있 습 니 다.예 를 들 어 4 개의 프로 세 스 를 동시에 실행 하고 싶 고 print 의 내용 을 인쇄 하고 싶 습 니 다.사용 가능:
pytest test_se.py -s -n 4
이상 은 Python 테스트 프레임 워 크 입 니 다:pytest 학습 노트 의 상세 한 내용 입 니 다.python pytest 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.