自動テストプロセスにおいて、我々は、他のインターフェイス(外部インタフェース)を呼び出すためにAインタフェースのニーズが発生する可能性があり、他のインターフェースができない通常のアクセス、我々はAインタフェースをテストする必要があり、我々は、サードパーティをシミュレートするために、モックを使用することができ要求が成功したインタフェースは、彼の戻り値にアクセスするには、次のテストすることができ
お支払いクラスを定義するには、サードパーティのインターフェース
インポートは、要求 クラスの支払いを: 「」「 サードパーティ決済クラスの定義 」「」 @staticmethod DEF AUTH(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 ペイ(セルフ、USER_ID、card_num、金額): "" " お支払い方法 :PARAM USER_ID:ユーザーID :PARAM card_num:カード :PARAM量:量 :リターン: "" " 試してみる: STATUS_CODE = self.auth(card_num、量) を除く TimeoutError: #の後、タイムアウト例外、および有料 STATUS_CODE = 自己を。 AUTH(card_num、金額) IF STATUS_CODE == 200: #戻り値200成功の 印刷(F " ![有料] {user_idを} {{量}]成功!!!借方および登録レコードを支払う" ) のリターン " 成功" elifの STATUS_CODE == 500: #異常に代わって支払った500 印刷( F " [{USER_ID}] [{量}}無償でのお支払いの失敗を!!!!" ) を返す " 失敗"
我々は、支払いインタフェースをテスト次に、
唯一成功した入金後、商品を購入するが、今の代わりにモック成功した再充電、便利な決済機能テストの使用上の、サードパーティ決済インターフェースを呼び出すことはできません?とき
インポートユニットテスト から unittestのインポートモック #1 unittestのモックの中のインポート から scripts.bbpayment インポート支払 #テスト支払いインターフェースモジュール クラスPaymentTest(たunittest.TestCase): 「」「 テスト支払インターフェース 」「」 DEF セットアップ(セルフ): self.payment支払い=() #は、このクラスのオブジェクトを作成 DEFのtest_normal(セルフ): "" " 通常の呼支払いインタフェースは失敗します :リターン: " "" RES = self.payment.pay(USER_ID = 1001 、有料(USER_ID = 1001 card_num6666 = 、 金額 = 100000 ) self.assertEqual(' 成功' 、RES) DEF test_success(自己): "" " テスト成功した支払い、アナログ戻り値 :リターン: " "" #のパーティ決済インターフェースすることができませんアクセス、我々は必要それを置き換えるために、偽のインターフェイスを作成し、アナログデータが返さ #はオブジェクトを返すことができます 。#self.payment.auth = mock.Mock(RETURN_VALUE =「{ 『名』: 『を超えた』、 『MSG』: 『成功した結婚』 "コード":8888}「) #は、戻りステータスコードシミュレートすることができる self.payment.auth = mock.Mock(= 200 RETURN_VALUEである) # card_numサードパーティインターフェースをカバーする偽インターフェース、アナログリターン200を作成します self.payment.pay = RES(USER_ID = 1001 、)6666 = 、 金額 = 100000 ) self.assertEqual(' 成功' 、RES) DEF test_fail(自己): "" " テストの支払いが失敗し、戻り値アナログ :リターン: " "" self.payment.auth = mock.Mock(RETURN_VALUE = 500) 位偽サードパーティインターフェースをカバーするインターフェース、アナログ戻り500作成 RES = self.payment.pay(USER_ID = 1001 、 card_num = 6666 、 AMOUNT = 100000 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 = 100000 ) self.assertEqual(' 成功' 、RES) IF __name__ == ' __main__" : unittest.main()
失敗の結果
成功した結果
*******転載するなど、オリジナルを尊重してください、ソースを明記してください:より転載:https://www.cnblogs.com/shouhu/ ありがとうございます!!*******