簡単な例を最初に:
インポート要求 から 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()