Python 단위 테스트 프레임워크에서 단위 테스트와 pytest의 차이점

머리말

오늘 저는 Python 단위 테스트 프레임워크에 대해 이야기하고 싶습니다. 우리 모두는 Python 단위 테스트 프레임워크가 많다는 것을 알고 있습니다. 우리가 일반적으로 사용하는 것은 상대적으로 기본적이고 보조 개발에 사용할 수 있는 단위 테스트입니다. 개발 수준이 매우 높다. 자동화된 테스트 플랫폼의 통합 개발도 가능하다. 이 기사에서는 주로 단위 테스트와 pytest의 차이점에 대해 설명합니다. 단위 테스트에 비해 pytest는 간단한 코드, 편리하고 유연한 사용, 풍부한 플러그인을 갖추고 있습니다. 더 이상 고민하지 않고 곧바로 주제로 넘어가겠습니다.

1. 유스케이스 작성 규칙

1. Unittest는 테스트 케이스, 테스트 스위트, 테스트 설비 및 테스트 실행기 관련 클래스를 제공하여 테스트를 보다 명확하고 편리하며 제어 가능하게 만듭니다. Unittest를 사용하여 사용 사례를 작성할 때 다음 규칙을 준수해야 합니다.

  (1) 테스트 파일은 먼저 unittest를 가져와야 합니다.
  (2) 테스트 클래스는 unittest.TestCase를 상속해야 합니다.
  (3) 테스트 메서드는 "test_"로 시작해야 합니다. (
  4) 테스트 클래스에는 unittest.main() 메서드가 있어야 합니다.

2. Pytest는 Python을 위한 타사 테스트 프레임워크로, unittest를 기반으로 한 확장 프레임워크로, unittest보다 더 간단하고 효율적입니다. pytest를 사용하여 사용 사례를 작성할 때 다음 규칙을 준수해야 합니다.

(1) 테스트 파일 이름은 "test_"로 시작하거나 "_test"로 끝나야 합니다(예: test_ab.py).
(2) 테스트 메서드는 "test_"로 시작해야 합니다.
(3) 테스트 클래스 이름은 "Test"로 시작됩니다.

요약: pytest는 단위 테스트 사례의 코드를 수정하지 않고도 단위 테스트 스타일 테스트 사례를 실행할 수 있으며 호환성이 좋습니다. Pytest에는 오류가 발생할 때 사용 사례를 다시 실행하는 데 사용할 수 있는 플라스크 플러그인, 장치의 병렬 실행에 사용할 수 있는 xdist 플러그인과 같은 풍부한 플러그인이 있습니다. 

2. 사용 전후 사례

1.unittest는 모든 사용 사례에만 사용할 수 있는 setUp/tearDown을 제공합니다.

2.pytest는 단위 테스트의 setUp/tearDown보다 유연한 모듈 수준, 함수 수준, 클래스 수준 및 메서드 수준 설정/해제를 제공합니다.

모듈 수준(setup_module/teardown_module)은 모듈의 시작과 끝에서 시작됩니다. 전역
함수 수준(setup_function/teardown_function)은 함수 사용 사례에만 적용됩니다(클래스에는 적용되지 않음).
클래스 수준(setup_class/teardown_class)에만 적용됩니다. 클래스(클래스 내) 전후에 한 번 실행됩니다.
메소드 수준(setup_method/teardown_method)은 클래스 내 메소드의 시작과 끝에서 시작하고
클래스 내부(setup/teardown)는 호출 전후에 실행됩니다. 방법.

3.pytest는 함수 앞에 @pytest.fixture() 데코레이터를 추가하고 테스트 케이스의 고정 함수에 설치할 수도 있습니다. Fixture의 사용 범위는 Function, Module, Class, Session이 될 수 있습니다.
Firture는 설정 및 해체에 비해 다음과 같은 장점이 있습니다.

명명 방법은 유연하며 설정 및 해제의 명명에 국한되지 않습니다
. 데이터 공유는 conftest.py 구성에서 달성할 수 있습니다. 일부 구성은 가져오기 없이 자동으로 찾을 수 있으며 여러 py 파일에서 호출할 수 있습니다.
scope="module"은 접두사 range="session"을 사용하여 여러 .py 교차 파일 공유를 실현하여
여러 .py 교차 파일을 실현할 수 있습니다. 하나의 세션을 사용하여 여러 사용 사례를 완료합니다.
항복을 사용하여 해제 실행을 활성화합니다.

3. 주장

1.unittest는 AssertEqual, AssertIn, AssertTrue 및 AssertFalse를 제공합니다.

2.pytest는 Assert 표현식을 직접 사용합니다.

4. 신고

1.unittest는 HTMLTestRunnerNew 라이브러리를 사용합니다.

2.pytest에는 pytest-HTML 및 allure 플러그인이 있습니다.

5. 실패 후 재실행

1. Unittest에는 이 기능이 없습니다.

2. Pytest는 사용 사례 실행이 실패할 경우 pytest-rerunfailures 플러그인으로 재실행을 지원합니다.

6. 매개변수화

1. Unittest는 ddt 라이브러리에 의존해야 합니다.

2. Pytest는 @pytest.mark.parametrize 데코레이터를 직접 사용합니다.

7. 유스케이스 분류 실행

1. Unittest는 기본적으로 모든 Use Case를 실행하며, Testsuit을 로드하여 일부 Use Case를 실행할 수도 있습니다.

2. Pytest는 @pytest.mark를 통해 클래스와 메소드를 표시할 수 있으며, pytest.main에 매개변수("-m")를 추가하면 표시된 클래스와 메소드만 실행할 수 있습니다.

8. 보기에 좋지 않으면 다음 표를 참조하십시오.

 일반적으로 단위 테스트 사용 사례 형식은 복잡하고, 호환성이 없으며, 플러그인이 적고, 보조 개발에 편리합니다. pytest는 더 편리하고 빠르며, 사용 사례 형식이 간단하고, 단위 테스트 사용 사례의 코드를 수정하지 않고도 단위 테스트 스타일의 테스트 사례를 실행할 수 있으며, 호환성이 더 좋습니다. 오류가 발생할 때 사용 사례를 다시 실행하는 데 사용할 수 있는 플라스크 플러그인, 장치의 병렬 실행에 사용할 수 있고 더 효율적인 xdist 플러그인 등 많은 pytest 플러그인이 있습니다.

마지막으로: 다음은 지원 학습 자료입니다. [소프트웨어 테스팅]을 수행하는 사람들에게는 가장 포괄적이고 완벽한 준비 창고가 되어야 합니다. 이 창고는 가장 어려운 여정에서도 저와 동행했습니다. 도움이 되기를 바랍니다.

소프트웨어 테스팅 인터뷰 애플릿

수백만 명이 사용하는 소프트웨어 테스트 문제 은행! ! ! 누가 아는가! ! ! 인터넷에서 가장 포괄적인 면접 테스트 미니 프로그램으로 휴대폰을 사용하여 질문에 답하고 지하철, 버스를 타고 롤업할 수 있습니다!

다음 인터뷰 질문 섹션을 다룹니다.

1. 소프트웨어 테스팅의 기본이론, 2. 웹, 앱, 인터페이스 기능 테스팅, 3. 네트워크, 4. 데이터베이스, 5. 리눅스

6. 웹, 앱, 인터페이스 자동화, 7. 성능 테스트, 8. 프로그래밍 기초, 9. HR 면접 질문, 10. 공개 테스트 질문, 11. 보안 테스트, 12. 컴퓨터 기초

  전체 정보를 얻는 방법: 아래의 작은 카드를 클릭하여 직접 얻으세요.

추천

출처blog.csdn.net/weixin_57794111/article/details/132900758