偽を返すように、アナログインタフェースにunittestの使用

  自動テストプロセスにおいて、我々は、他のインターフェイス(外部インタフェース)を呼び出すために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/    ありがとうございます!******* 

おすすめ

転載: www.cnblogs.com/shouhu/p/12166232.html