pytest 단위 테스트 프레임워크 - 통합 가이드

1. @pytest.mark.parametrize() 기본 사용법

@pytest.mark.parametrize(args_name, args_value)

args_name: 인자 이름
args_value: 인자 값 (리스트 [], 튜플 (), 딕셔너리 리스트 [{}, {}], 딕셔너리 튜플 ({}, {})). 값의 개수만큼 테스트 케이스가 실행됩니다.

import time
import pytest

class TestApi:
    # 리스트 사용
    @pytest.mark.parametrize('a', ['1', '2'])
    def test_huahua(self, a):
        time.sleep(5)
        print(a)

    # unittest의 ddt에서 @unpack과 동일
    @pytest.mark.parametrize('a', [['1', '2'], ['11', '22']])
    def test_huahua1(self, a):
        time.sleep(5)
        print(a)

    # 튜플 사용
    @pytest.mark.parametrize('a', ('1', '2'))
    def test_huahua2(self, a):
        time.sleep(5)
        print(a)

    # 딕셔너리 리스트
    @pytest.mark.parametrize('a', [{'huahua', '4'}, {'caocao', '6'}])
    def test_huahua3(self, a):
        time.sleep(5)
        print(a)

    # 딕셔너리 튜플
    @pytest.mark.parametrize('a', ({'huahua', '88'}, {'caocao', '66'}))
    def test_huahua4(self, a):
        time.sleep(5)
        print(a)

    # 다중 인자 - 리스트
    @pytest.mark.parametrize('a, b', [['나', '4'], ['너', '6']])
    def test_chen(self, a, b):
        print(a, b)

    # 다중 인자 - 딕셔너리 리스트
    @pytest.mark.parametrize('a, b', [{'hua', '4'}, {'cao', '6'}, {'yun', '8'}])
    def test_chen1(self, a, b):
        print(a, b)

if __name__ == '__main__':
    pytest.main(['-vs'])

실행 결과:

2. YAML 파일 상세 설명 - 인터페이스 자동화 구현

YAML은 다음 용도로 사용됩니다:

  1. 전역 설정 파일 (ini/yaml)
  2. 테스트 케이스 작성 (인터페이스 테스트 케이스)

YAML 개요

YAML은 주석, 줄바꿈, 여러 줄 문자열, 원시 문자열(정수, 문자열)을 지원하는 데이터 형식입니다.

문법 규칙

  1. 대소문자 구분
  2. 들여쓰기로 계층 표현 (탭 키 사용 불가, 공백만 허용, Python과 동일)
  3. 들여쓰기 수는 고정되지 않음 (정렬만 맞으면 됨)
  4. 주석은 # 사용

데이터 구성

1. Map 객체 (키-값 쌍)

키:(공백)값

여러 줄 작성:

msxy:
  name: 꽃
  age: 18

한 줄 작성:

msxy: {name: 꽃, age: 18}

2. 배열 (리스트)

하이픈(-)으로 시작:

여러 줄 작성:

-
 msxy:
  - name: 꽃
  - age: 18
-
 msjy:
  - name: 별
  - age: 20

한 줄 작성:

-
 msxy: [{name: 꽃}, {age: 18}]

YAML 형식 검증 사이트: https://www.bejson.com/validators/yaml_editor/

3. YAML 인터페이스 자동화 실전

프로젝트에 Pyyaml을 먼저 설치해야 합니다.

YAML 읽기 지식:
YAML을 사용한 인터페이스 자동화 예제

고급 심화 지식

1. 단언문(assertion) 캡슐화, Logger 로그

2. Allure 보고서 커스터마이징

3. 키워드 기반과 데이터 기반을 결합한 자동화 테스트

4. Python 리플렉션(reflection)

일반적인 방식: 객체를 초기화한 후 메서드 호출
리플렉션 방식: 객체를 통해 클래스 객체를 얻고, 클래스 객체를 통해 메서드 호출

5. Jenkins 지속적 통합 및 Allure 보고서 통합

자동화 보고서의 오류율에 따라 이메일 전송

태그: Pytest parametrize YAML Pyyaml API 자동화

7월 8일 04:10에 게시됨