Python 테스트 프레임 워 크:pytest 학습 노트

python 유 니 버 설 테스트 프레임 워 크 는 대부분 유 니 버 설 테스트+HTML TestRunner 를 사용 합 니 다.그 동안 pytest 문 서 를 보 았 는데 이 프레임 워 크 와 풍부 한 plugins 가 좋 은 것 을 발 견 했 습 니 다.그래서 pytest 를 배 워 보 겠 습 니 다.

pytest 는 매우 성숙 한 전 기능 의 Python 테스트 프레임 워 크 로 주로 다음 과 같은 몇 가지 특징 이 있 습 니 다.
간단 하고 유연 하 며 손 에 넣 기 쉽다.
파라미터 화 지원
  • 간단 한 유닛 테스트 와 복잡 한 기능 테스트 를 지원 할 수 있 고 selenium/appnium 등 자동화 테스트,인터페이스 자동화 테스트(pytest+requests)도 할 수 있 습 니 다
  • pytest 는 제3자 플러그 인 이 많 고 사용자 정의 확장 이 가능 합 니 다.예 를 들 어 pytest-selenium(집성 selenium),pytest-html(완벽 한 html 테스트 보고서 생 성),pytest-relunfailures(실패 케이스 중복 실행),pytest-xdist(다 중 CPU 분 발)등 이 좋 습 니 다
  • 테스트 용례 의 skip 와 xfail 처리4.567917.jenkins 와 잘 통합 할 수 있 습 니 다.4.567918.
    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시작
  • 기본 적 인 assert 를 사용 하면 된다 고 단언 합 니 다
  • 실행 모드
      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 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!

    좋은 웹페이지 즐겨찾기