Python 기반 인터페이스 자동화 유닛 테스트 프레임 워 크 와 dt 데이터 구동 상세 설명

머리말
인터페이스 자동화 사례 를 작성 할 때,우 리 는 일반적으로 하나의 인터페이스 에 대해.py 파일 을 만 듭 니 다.하나의 인터페이스 테스트 사례 는 함수(방법)로 봉 인 됩 니 다.그러나 대량으로 실행 하 는 과정 에서 오류 가 발생 하면 뒤의 사례 는 실행 할 수 없습니다.그리고 대량의 인터페이스 테스트 사례 를 실행 할 때 데 이 터 를 어떻게 관리 하고 불 러 오 는 지 테스트 합 니 다.테스트 용례 불 러 오기 및 실행 제어 에 대해 python 언어 는 unittest 단원 테스트 프레임 워 크 를 제공 합 니 다.테스트 용례 를 unittest 프레임 워 크 에 작성 합 니 다.이 프레임 워 크 를 사용 하면 서로 영향 을 주지 않 는 용례 실행 및 더욱 유연 한 실행 제 어 를 단일 또는 대량으로 불 러 올 수 있 습 니 다.테스트 데이터 관리 와 불 러 오기 에 더 좋 은 데 이 터 를 도입 합 니 다.테스트 데이터 와 테스트 스 크 립 트 의 분 리 는 dt 데이터 구동 을 통 해 테스트 데 이 터 를 테스트 사례 스 크 립 트 에 불 러 옵 니 다.보통 인터페이스 자동화 테스트 에서 유 니 트 테스트 와 dt 를 결합 하여 사용 하여 테스트 사례 스 크 립 트 와 테스트 데 이 터 를 불 러 와 테스트 를 수행 합 니 다.유닛 테스트 프레임 워 크 와 dt 두 모듈 의 구체 적 인 응용 을 살 펴 보 겠 습 니 다.
1.unittest 테스트 프레임 워 크
unittest 단원 테스트 프레임 워 크 는 python 언어의 표준 모듈 로 봉인 은 많은 조작 테스트 용례 와 용례 불 러 오기,테스트 전치 와 장면 회복,테스트 결과 출력 등 일련의 종류 와 방법 을 제공한다.
1.unittest 프레임 워 크 의 가장 핵심 적 인 네 가지 구성 요소 개념:
(1)TestCase:테스트 사례 류,테스트 사례 스 크 립 트 를 작성 할 때 이 종 류 를 계승 하여 이러한 속성 과 방법 을 가 집 니 다.하나의 TestCase 인 스 턴 스 는 테스트 사례 입 니 다.그 중에서 테스트 사례 방법 은 모두 test 로 시작 합 니 다.
(2)TestSuite:테스트 집합,즉 테스트 사례 의 집합 으로 사례 를 구성 하 는 데 사용 된다.
(3)testrunner:테스트 용례 를 실행 하고 테스트 용례 의 실행 결 과 를 되 돌려 줍 니 다.테스트 결 과 를 도형 이나 텍스트 로 이미지 있 게 보 여 줍 니 다.HTML TestRunner 는 도형 화 된 보고 서 를 만 들 고 TextTestRunner 는 간단 한 텍스트 테스트 결 과 를 만 들 수 있 습 니 다.
(4)testfix ure:테스트 클립 은 주로 테스트 사례 의 초기 화 와 실행 후의 소각 에 사 용 됩 니 다.
2.testcase----테스트 용례
  • 새로 만 든.py 테스트 용례 파일 은 test 로 시작 해 야 합 니 다.예 를 들 어 testlogin.py,주로 테스트 사례 파일 을 식별 하여 테스트 사례 를 작성 하 는 클래스 입 니 다.유닛 test.TestCase 를 계승 하여 테스트 클래스
  • 로 해 야 합 니 다.
  • 테스트 클래스 에서 사례 를 사용 하 는 방법 명 은 test 로 시작 하여 테스트 사례 수
  • 를 식별 해 야 한다.
  • 테스트 클래스 의 용례 집행 순 서 는 test 로 시작 하 는 방법 후의 Ascill 코드 순서에 따라 집행(0~9,A~Z,a~z)
  • 3.testfix ure---테스트 클립
  • 테스트 그리 퍼 라 고도 부 르 는데 주로 사례 가 초기 화 되 고 실 행 된 후의 소각
  • 이다.
  • 테스트 클립 은 두 가지 방법 을 제공 합 니 다.하 나 는 클래스 등급 입 니 다.setup()과 teardown(),하 나 는 방법 등급 입 니 다.setUpClass()와 tearDownClass()
  • 클래스 등급 의 테스트 폴 더 는 모든 테스트 사례 가 실행 되 기 전과 그 후에 setup()과 teardown()을 실행 해 야 합 니 다.방법 단계 의 테스트 폴 더,모든 테스트 용례 가 실 행 될 때 까지 setUpClass()와 tearDownClass()
  • 를 한 번 만 실행 합 니 다.
    다음은 간단 한 코드 예 시 를 통 해 TestCase 와 TestFixure 의 사용 을 살 펴 보 겠 습 니 다.
    (1)setup()과 teardown()을 사용 하여 test 생 성666.py 파일 은 다음 코드 를 편집 합 니 다.
    
    import unittest
     
    class test_unittest(unittest.TestCase):
     def setUp(self):
      print("       ,    setup")
     
     def tearDown(self):
      print("      ,  teardown")
      print("------------------------------")
     def test_a(self):
      print("    test_a  ")
     
     def test_A(self):
      print("    test_A  ")
     
     def test_1(self):
      print("    test_1  ")
     
     def notest_1(self):
      print("   notest_1  ")
     
    if __name__ == "__main__":
     unittest.main()
    실행 후 출력 은 다음 과 같 습 니 다:

    코드 에서 우 리 는 4 개의 def 용례 방법 을 작 성 했 습 니 다.3 개의 def 만 실 행 했 습 니 다.마지막 def 는 test 시작 이 아니 기 때 문 입 니 다.def 용례 를 실행 할 때마다 setup()과 teardown()이 한 번 씩 실행 되 는 것 을 볼 수 있 습 니 다.그 중에서 실행 순서에 따라:test1 가장 먼저 실행,testA 이후,test마지막 실행
    (2)setUpClass()와 tearDownClass()를 사용 합 니 다.
    setUpClass()와 tearDownClass()에 대해
    
    import unittest
     
    class test_unittest(unittest.TestCase):
     @classmethod
     def setUpClass(cls):
      print("       ,    setup")
     @classmethod
     def tearDownClass(cls):
      print("      ,  teardown")
      print("------------------------------")
     def test_a(self):
      print("    test_a  ")
     
     def test_A(self):
      print("    test_A  ")
     
     def test_1(self):
      print("    test_1  ")
     
    if __name__ == "__main__":
     unittest.main()
    실행 효 과 는 다음 과 같 습 니 다:
    모든 용례 가 실 행 된 후 setUpClass()와 tearDownClass() 。 , ,를 볼 수 있 습 니 다.
    이때 우리 가 바 라 는 것 은 모든 용례 를 집행 한 후에 환경 을 없 애 는 것 이다.이때setUpClass()tearDownClass()를 사용 하 는 것 이 좋다.

    3.TestSuite----테스트 집합
    unittest 프레임 워 크 에서 unittest.TestSuite()와 unittest.TestLoader()클래스 를 제 공 했 습 니 다.이 두 가지 클래스 에 서 는 테스트 용례 를 테스트 집중 에 불 러 오 는 데 사 용 됩 니 다.
    (1)unittest.TestSuite()는 하나의 사례 로 불 러 오 는 방법 을 제공 합 니 다.
    addTest():하나의 사례 로 불 러 옵 니 다.물론 여러 사례 의 방법 명 을 목록 에 추가 하여 addTest()에 추가 할 수도 있 습 니 다.여러 테스트 사례 를 불 러 옵 니 다.
    (2)unittest.TestLoader()는 대량으로 불 러 오 거나 사례 를 발견 하 는 방법 을 제공 합 니 다.
    loadtasts FromTestCase(테스트 클래스 이름):테스트 클래스 추가
    loadtastsFromModule(모듈 명):모듈 추가
    discover(테스트 용례 가 있 는 디 렉 터 리):디 렉 터 리 를 지정 하여 불 러 옵 니 다.이 디 렉 터 리 에서 이름 규칙 에 맞 는 모든 테스트 용례 를 자동 으로 찾 습 니 다.
    4.testrunner----테스트 실행
    testrunner 는 테스트 용례 를 실행 하고 해당 하 는 테스트 보고 서 를 생 성 할 수 있 습 니 다.테스트 보고 서 는 두 가지 전시 형식 이 있 는데 하 나 는 text 텍스트 이 고 하 나 는 html 형식 이다.
    html 형식 은 바로 HTML TestRunner 입 니 다.HTML TestRunner 는 Python 표준 라 이브 러 리 의 unittest 프레임 워 크 의 확장 으로 직관 적 이 고 뚜렷 한 HTML 테스트 보고 서 를 만 들 수 있 습 니 다.사용 전 제 는 HTML TestRunner.py 를 다운로드 하고 다운로드 한 후 python 의 설치 디 렉 터 리 에 있 는 scripts 디 렉 터 리 에 놓 으 면 됩 니 다.
    코드 예 시 를 통 해 testsuite 와 testrunner 두 구성 요소 의 사용 을 보십시오.위의 test666.py 용례 파일 우 리 는 이미 세 가지 용례 를 썼 습 니 다.지금 우 리 는 이 용례 를 불 러 옵 니 다.
    새 runcase.py 파일,이 파일 과 test666.py 파일 을 같은 패키지 파일 에 배치:test 에서 runcase.py 파일 편집 다음 코드 실행:
    
    import unittest
    from test.test_666 import test_unittest
     
    #       
    suite = unittest.TestSuite()
    case1 = test_unittest('test_1')
    case2 = test_unittest('test_a')
    suite.addTest(case1)
    suite.addTest(case2)
    print(suite)
    print("------------------")
    #       
    case_path = r"E:\api_test\test"
    #        ,              __init__.py
    all_case = unittest.defaultTestLoader.discover(case_path,pattern="test_666*.py",top_level_dir=None)
    all_case1 = unittest.defaultTestLoader.loadTestsFromTestCase(test_unittest) #       
    print(all_case)
    print("------------------")
    print(all_case1)
    출력 결 과 는 다음 과 같 습 니 다.
    E:\api_test\Scripts\python.exe E:/api_test/test_bak/run_case.py
    , ]>
    ------------------
    , , ]>]>]>
    ------------------
    , , ]>
     
    Process finished with exit code 0
    unttest 프레임 워 크 에서 제공 하 는 로 딩 사례 의 여러 가지 방법 을 통 해 저 희 는 하나의 또는 대량으로 로 딩 사례 를 불 러 올 수 있 습 니 다.추 후 로 딩 사례 집 을 HTML TestRunner.py 모듈 에 도입 하여 시각 화 된 테스트 보고 서 를 만 들 수 있 습 니 다.
    5.assert---테스트 단언
    어떤 테스트 사례 든 마지막 으로 사례 가 실 행 된 후의 검증 이 필요 하 다.인터페이스 자동화 테스트 에서 우 리 는 인터페이스 사례 를 실행 한 후에 도 단언 사례 가 우리 의 기 대 를 만족 시 키 는 지 검증 해 야 한다.unittest 는 풍부 한 단언 방법 을 제공 합 니 다.흔히 볼 수 있 는 단언 은 다음 과 같 습 니 다.

    2.dt 데이터 구동
  • @dt:클래스 의 장식 기 는 TestCase 클래스
  • 를 계승 합 니 다.
  • @data():@data 장식 부 호 는 파 라 메 터 를 테스트 데이터 로 할 수 있 습 니 다.파 라 메 터 는 단일 값,목록,원조,사전 등 유형 으로 테스트 데 이 터 를 입력 할 수 있 습 니 다
  • .
  • @unpack:데이터 표 지 를 분해 하고 원조 와 목록 을 여러 개의 매개 변수 로 해석 합 니 다
  • @file_data():json 이나 Yml 형식 파일
  • 과 같은 파일 을 입력 하 십시오.
    (1)간단 한 인자 입력:단일 값,목록,원조,사전
    
    import unittest
    from ddt import data,unpack,ddt
     
    @ddt
    class myddt(unittest.TestCase):
     
     @data("123")    #    
     def test1(self,testdata1):
      print(testdata1)
      print("------------------")
     
     @data([1,2,3],[4,5,6]) #   
     def test2(self,testdata2):
      print(testdata2)
      print("------------------")
    """
     @data((1, 2, 3))   #   
     def test2(self, testdata3):
      print(testdata3)
      print("------------------")
     
     @data({'zhangshan':1,'wangwu':2,'lisi':3}) #   
     def test2(self, testdata4):
      print(testdata4)
      print("------------------")
    """
    if __name__ == '__main__':
      unittest.main()
    (2)원 그룹,목록 데이터 등 복잡 한 데이터 구 조 를@unpack 으로 분해 합 니 다.
    코드 예제:
    
    import unittest
    from ddt import data,unpack,ddt
     
    @ddt
    class myddt(unittest.TestCase):
     
     @data([1,2],[3,4]) #   
     @unpack
     def test2(self, testdata1,testdata2):
      print("        :",testdata1)
      print("        :", testdata2)
      print("------------------")
     
    if __name__ == '__main__':
      unittest.main()
    실행 후 출력 은 다음 과 같 습 니 다:

    (3)@file 사용data()입력 파일 형식 테스트 데이터
    data.json 파일 을 편집 합 니 다.코드 예제:
    
    import unittest
    from ddt import file_data,ddt
     
    @ddt
    class myddt(unittest.TestCase):
     
     @file_data(r"E:\api_test\test\data.json")
     def test1(self, *value):
      print(value)
     
    if __name__ == '__main__':
      unittest.main()
    ddt 와 unittest 프레임 워 크 의 결합 을 통 해 테스트 사례 스 크 립 트 작성,테스트 실행 제어 및 테스트 데이터 의 대량 로드 를 실현 하여 서로 다른 인터페이스 테스트 사례 의 대량 실행 과 테스트 장면 을 덮어 쓸 수 있 습 니 다.
    파 이 썬 기반 인터페이스 자동화 유닛 테스트 프레임 워 크 와 dt 데이터 구동 에 대한 자세 한 설명 은 여기까지 입 니 다.더 많은 파 이 썬 의 인터페이스 자동화 dt 데이터 구동 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 십시오.앞으로 많은 지원 을 바 랍 니 다!

    좋은 웹페이지 즐겨찾기