mock總所周知是模擬的意思,我們在做接口測試的時候有時候會發(fā)現(xiàn)部分功能依賴其他業(yè)務場景或者第三方功能或者是線上數(shù)據(jù)或者業(yè)務場景過于復雜(需要大量調(diào)用)的情況,沒有辦法通過接口調(diào)用或者做斷言,這個時候就需要mock了

python2中需要pip install mock來導入mock第三方模塊,而python3中被引入到unittest框架中,直接from unittest import mock 就可以導入mock模塊了
在單元測試中只針對當前單元做測試,就是測試當前方法或者是當前類,但是如果出現(xiàn)這個方法依賴其他第三方模塊,那不是還要校驗其他方法了嗎,那就違背了單元測試這個概念了,所有將外部依賴組件實現(xiàn)模擬并替換掉,使得單元測試的焦點放在自己身上
為了演示,用fastapi模擬了一個tx和ali的接口來調(diào)用作為單元測試,可以看到需要同時調(diào)用兩個接口才能完成單元測試
from unittest import TestCase, main, mock
import requests
class Request(object):
def request_tx(self):
tx_url = 'http://127.0.0.1:8000/tx'
tx_data = {"a": 1, "b": 2}
tx_result = requests.post(tx_url, json=tx_data)
tx_result = tx_result.json()
return tx_result
def request_ali(self):
ali_url = 'http://127.0.0.1:8000/ali'
ali_data = {"c": 1, "d": 2}
ali_result = requests.post(ali_url, json=ali_data)
ali_result = ali_result.json()
return ali_result
class Myproject(TestCase):
def test_api(self):
r = Request()
ali_result = r.request_ali()
tx_result = r.request_tx()
self.assertEqual(int(ali_result['result']['all_add_value']) + int(tx_result['result']['all_add_value']), 6)
當前標題:pythonmock測試的示例-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://www.chinadenli.net/article4/djheoe.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、做網(wǎng)站、網(wǎng)站制作、電子商務、網(wǎng)站改版、全網(wǎng)營銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)