pytest mock 除錯例項

2022-07-07 20:48:16 字數 2507 閱讀 9548

安裝

pip install mock

pip install pytest-mock

例項第三方介面 payment.py

#

coding = utf-8

import

requests

class payment: #

支付類def

requestoutofsystem(self, card_num, amount):

'''請求第三方外部支付介面,並返回響應碼

:param card_num:

:param amount:

:return: 返回狀態碼,200 代表支付成功,500 代表支付異常失敗

'''print('

呼叫第三方介面~~~~~~')

url = "

"#第三方支付介面請求位址

data = #

請求引數

response = requests.post(url, data=data)

return response.status_code #

返回狀態碼

defdopay(self, user_id, card_num, amount):

'''支付

:param userid: 使用者id

:param card_num: 卡號

:param amount: 支付金額

:return:

'''try

:

#呼叫第三方支付介面請求進行真實扣款

resp =self.requestoutofsystem(card_num, amount)

print('

呼叫第三方支付介面返回結果:

', resp)

#except timeouterror:

## 如果超時就重新呼叫一次

#print('重試一次~~~~')

#resp = self.requestoutofsystem(card_num, amount)

except

: resp =self.requestoutofsystem(card_num, amount)

print('

呼叫第三方支付介面返回結果:

', resp)

if resp == 200: #

返回第三方支付成功,則進行系統裡面的扣款並記錄支付記錄等操作

print("

支付成功!!!進行扣款並記錄支付記錄

".format(user_id, amount))

return

'success

'elif resp == 500: #

返回第三方支付失敗,則不進行扣款

print("

支付失敗!!不進行扣款!!!

".format(user_id, amount))

return

'fail

'

介面用例

#

!/usr/bin/env python

#-*- coding:utf-8 -*-

#@time : 2021/1/10 17:34

#@author : asus

#@file : xiaoming.py

#@software: pycharm community edition

import

pytest

import

payment

import

mock

class

testdemomork:

deftest_success(self,mocker):

"""測試支付成功

:return:

"""pay =payment.payment()

pay.requestoutofsystem=mocker.patch('

payment.payment.requestoutofsystem

',return_value=200) #

mock第三方介面.寫路徑和返回值

#第二種寫法

#pay.requestoutofsystem=mocker.patch.object(payment.payment,'requestoutofsystem',return_value=200) #mock第三方介面

resp = pay.dopay(user_id=1, card_num="

439019098

", amount=200)

print("

這是執行結果:{}

".format(resp))

assert resp=='

success'#

if __name__ == '__main__':

#pytest.main(["-s","test_demo1.py::testdemomork::test_success"])

gdb 除錯例項

一 gdb 除錯段錯誤 1 編寫 vim segfault.c include int main char buf buf hello,world retrun 1 2 編譯 gcc g segfault.c lsa.out segfault.c 3 除錯 a.out segmentation fa...

GDB除錯精粹及使用例項

gdb除錯精粹及使用例項 一 列檔案清單 1 list gdb list line1,line2 二 執行程式 要想執行準備除錯的程式,可使用run命令,在它後面可以跟隨發給該程式的任何引數,包括標準輸入和標準輸出說明符 和外殼萬用字元 在內。如果你使用不帶引數的run命令,gdb就再次使用你給予前...

GDB除錯精粹及使用例項

一 列檔案清單 1 list gdb list line1,line2 二 執行程式 要想執行準備除錯的程式,可使用run命令,在它後面可以跟隨發給該程式的任何引數,包括標準輸入和標準輸出說明符 和外殼萬用字元 在內。如果你使用不帶引數的run命令,gdb就再次使用你給予前一條run命令的引數,這是...