자동화 된 테스트 과정에서, 우리는 다른 인터페이스 (외부 인터페이스)를 호출하는 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/ 감사합니다! ! *******