반환 모의에 아날로그 인터페이스 유닛 테스트에 사용

  자동화 된 테스트 과정에서, 우리는 다른 인터페이스 (외부 인터페이스)를 호출하는 A A 인터페이스의 요구가 발생할 수 있지만, 다른 인터페이스는 할 수 없습니다 일반적으로 액세스,하지만 우리는 A 인터페이스를 테스트해야합니다, 우리는 제 3 자 시뮬레이션, 모의을 사용할 수 있습니다 성공적인 요청 후 인터페이스는, 자신의 반환 값에 대한 액세스는 다음 테스트 할 수 있습니다

  지급 클래스를 정의하기 위해 타사 인터페이스

가져 오기 요청 


클래스 지불 :
     "" " 
    타사 지불 클래스의 정의 
    " "" 
    @staticmethod 
    DEF 인증 (card_num는, 양) :
         "" " 
        타사 지불 인터페이스가 아닌 우리 자신의 개발 인터페이스를 지불 보물을 요청을 
        : PARAM의 card_num를 : 카드 번호 
        : PARAM 금액 : 금액 
        : 반환 : 반환 상태 코드, 코드 (200) 성공적으로 지불, 지불 500 명 규모 이상 
        "" " 
        URL = " HTTP : 타사 인터페이스 // 문자열 .site "         # 인터페이스의 잘못된 주소를 액세스 할 수없는 
        데이터 =을 { " card_num " : card_num, " 금액 " : 금액}      #의 매개 변수
        requests.post = RES (URL, 데이터 = 데이터)      #의 매개 변수 전달 
        반환 res.status_code의                   # 정상 반환 상태 코드, 코드 (200) 성공적으로 지불, 이상 (500)를 대신 지불 

    DEF 지불 (자체 266 card_num, 금액) :
         "" " 
        지불 방법 
        : PARAM의 USER_ID : 사용자 ID 
        : PARAM의 card_num : 카드 
        : PARAM 금액 : 금액 
        : 반환 : 
        "" " 
        은 try : 
            STATUS_CODE = self.auth (card_num, 양의)
         제외 TimeoutError :     #의 다음 시간 제한 예외 및 유료 
            STATUS_CODE = 자기. 인증 (card_num, 금액) 

        IF STATUS_CODE == 200 :      # 반환 200 성공 
            인쇄 (F " [유료] {USER_ID} {{양}] 성공! 차변과 등록 기록을 지불! " )
             반환  " 성공 " 
        ELIF STATUS_CODE == 500 :     # 비정상적인 대신 지불 (500) 
            인쇄 ( F " [{USER_ID}] [{양}} 무료로 지급 실패!! " )
             반환  " 실패 "

  우리는 지불 인터페이스를 테스트 다음으로

 때 대신 모의 성공적으로 재충전, 편리한 지불 기능 검사의 사용에, 타사 지불 인터페이스를 호출 할 수 없습니다 이제 성공적으로 결제 후 상품을 구입하지만 하는가?

가져 오기 유닛 테스트
 에서 유닛 테스트 가져 오기 모의                #의 유닛 테스트 모의 중 수입 

에서 scripts.bbpayment 가져 오기 지불    # 테스트 지불 인터페이스 모듈 


클래스 PaymentTest (unittest.TestCase) :
     "" " 
    시험 지불 인터페이스 
    " "" 
    DEF 설치 (자동) : 
        self.payment 지불 = ()     #는 이 클래스의 객체 생성 

    DEF의 : test_normal (자체)
         "" " 
        실패 일반 전화 결제 인터페이스 
        : 반환 : 
        " "" 
        RES = self.payment.임금 (USER_ID = 1001  ,
                               card_num = 6666 , 
                               금액은 100,000 = ) 
        self.assertEqual ( ' 성공 ' , RES) 

    DEF test_success (자기) :
         "" " 
        테스트를 성공적으로 지불, 아날로그 반환 값 
        : 반환 : 
        " "" 
        #의 자 지불 인터페이스는하지 액세스, 우리가해야 할 수 있습니다 그것을 대체 할 가짜 인터페이스를 만들기 위해, 아날로그 데이터가 반환 
        #은 객체 반환 할 수 
        # "을 넘어", "MSG": self.payment.auth = mock.Mock (RETURN_VALUE = '{ "이름" "성공적인 결혼 생활을" "코드"8888} ') 
        #은 반환 상태 코드를 시뮬레이션 할 수 있습니다 
        self.payment.auth = 모의.     모의 (RETURN_VALUE = 200) # 1 외부 인터페이스를 포함하는 인터페이스 거짓 아날로그 창 (200)을 만들
        self.payment.pay = RES (USER_ID = 1001 ,
                               card_num = 6666 , 
                               금액 = 100000 ) 
        self.assertEqual ( ' 성공 ' , RES) 

    DEF test_fail (자기가) :
         "" " 
        시험 지불 실패 반환 값 아날로그 
        : 반환 : 
        " " " 
        self.payment.auth = mock.Mock (RETURN_VALUE = 500)      #은 외부 인터페이스를 포함하는 인터페이스 거짓 아날로그 창을 만들 500 
        RES = self.payment.pay (USER_ID = 1,001 , 
                               card_num = 6666 , 
                               AMOUNT = 100,000 ) 
        self.assertEqual ( ' 실패 ' , RES) 

    DEFtest_retry_success (자기) :
         "" " 
        타사 인터페이스 다시 타임 아웃이라는 테스트, 문자열 성공, 아날로그 반환 값 후 
        : 반환 : 
        " "" 
        #의 국경 체크 대량 참여 
        self.payment.auth = mock.Mock (side_effect = [ TimeoutError 200이다 ]) 
        RES = self.payment.pay (USER_ID = 1001 , 
                               card_num = 6666 , 
                               AMOUNT = 100,000 ) 
        self.assertEqual ( ' 성공 ' , RES) 


IF  __name__ == ' __main__' : 
    unittest.main ()

  실패의 결과

  성공적인 결과

  

 

 

 

******* 다시 인쇄 등의 원본을 존중하십시오, 소스를 표시하십시오에서 재판 : https://www.cnblogs.com/shouhu/    감사합니다! ! ******* 

추천

출처www.cnblogs.com/shouhu/p/12166232.html