Pythonの。Mock.Mock()模擬テストのために

簡単な例を最初に:

インポート要求
 から unittestの輸入モック

デフrequest_lemonfix():
     "" " 
リターン
     """ 
    RES = requests.get(' http://www.lemonfix.com ' の戻り res.status_code.encode(' UTF-8 ' 


もし __name__ == ' __main__ ' 
    request_lemonfix = mock.Mock(RETURN_VALUE = " 这里会显示论坛主页" プリント(request_lemonfix())

その後、再び実用例:モック使用して呼び出すことができない現在の状況下で、サードパーティ決済にテストインタフェースを完了します

インポート要求の


クラスのお支払い方法:
     「」「
    定義されたクラスのパーティ決済
    」「」
    DEF authe(セルフ、card_num、量):
         「」 " 
        サードパーティの支払いインタフェースを尋ねると、レスポンスコードを返す
        :PARAM card_num:カード
        :PARAM量:金額
        :リターン:、成功した支払いを表す異常500に代わって支払いをステータスコード200を返す
        "" " 
        URL = " https://www.dd.com "   第URL 
        データ= { " card_num ":card_num、" 金額:AMOUNT} 
        レスポンス = requests.post(URL、データ= データ)
         のリターンresponse.status_code 

    デフ(自己、USER_ID、card_num、金額)を支払う:
         "" " 
        支付
        :PARAMのuser_id:用户ID 
        :PARAM card_num:卡号
        :PARAM量:金额
        :リターン
        """ 
        してみてください
            STATUS_CODE = self.authe(card_num 、量)
         を除くTimeoutError:
            STATUS_CODE = self.authe(card_num、量)

        であれば STATUS_CODEの== 200 プリント" 支付成功" のリターン " 成功" 
        の場合== 500 STATUS_CODE 印刷失敗のために支払うの戻り 失敗

のは、テストクラスを見てみましょう:

輸入unittestの
支払輸入支払いから
unittestの輸入モックから


クラスPaymentTest(たunittest.TestCase):
    "" " 
    测试支付接口
    """ 
    デフセットアップ(自己):
        self.payment =お支払い()

    デフtest_success(自己):
        ""」
        测试支付成功
        :リターン:
        "" " 
        self.payment.authe = mock.Mock(RETURN_VALUE = 200)
        RES = self.payment.pay(USER_ID = 10001、card_num = "123444"、量= 1000)
        self.assertEqual("成功"RES)

    デフtest_fail(自己
        ):""" 
        测试支付成功
        :リターン:
        「」」
        self.payment.authe = mock.Mock(RETURN_VALUE = 500)
        = self.payment.pay RES(USER_ID = 10002、card_num = "1233444"、金額= 1000)
        self.assertEqual( "失敗"、RES)

    DEF test_retry_success(自己):
        "" " 
                テストが成功リトライ支払うことに失敗した
                ことができますside_effectを配列型例外タイプ、オブジェクト
                の各呼び出しシーケンスモックオブジェクトの種類は、次に要素側effcetが返された場合
                :リターン:
                「」 " 
        self.payment.authe = mock.Mock(side_effect = [TimeoutError、200です])
        self.payment.payの=のRES(USER_ID = 10003、card_num = "1234444"、金額= 1000)
        self.assertEqual( "成功"、RES)


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

  

おすすめ

転載: www.cnblogs.com/nuonuozhou/p/11533526.html