国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

Python Mock模塊原理及使用方法詳解

瀏覽:4日期:2022-07-18 13:06:27

一、mock是什么?

英譯中含義有:虛假的; 不誠(chéng)實(shí)的; 模仿的; 模擬的 這個(gè)意思

這個(gè)庫的主要功能就是模擬一些事務(wù)

官方解釋:Mock是Python中一個(gè)用于支持單元測(cè)試的庫,它的主要功能是使用mock對(duì)象替代掉指定的Python對(duì)象,以達(dá)到模擬對(duì)象的行為

二、為什么要用mock?

舉例:

假設(shè)你開發(fā)一個(gè)項(xiàng)目,里面包含了一個(gè)登錄模塊,登錄模塊需要調(diào)用身份證驗(yàn)證模塊中的認(rèn)證函數(shù),該認(rèn)證函數(shù)會(huì)進(jìn)行值的返回,然后系統(tǒng)根據(jù)這個(gè)返回值來做判斷是否能進(jìn)行登錄。但是身份證驗(yàn)證模塊中的認(rèn)證函數(shù)只有在正式上線的系統(tǒng)上才提供。公司內(nèi)部的測(cè)試環(huán)境或者開發(fā)環(huán)境上不提供。

如果此時(shí)需要進(jìn)行登錄模塊的業(yè)務(wù)測(cè)試或接口測(cè)試,該如何做?

方法一:

搭建一個(gè)測(cè)試服務(wù)器,在測(cè)試的時(shí)候,讓認(rèn)證函數(shù)和這個(gè)測(cè)試服務(wù)器交互,返回值給登錄模塊;

缺點(diǎn):

1、測(cè)試服務(wù)器可能不好搭建,或者搭建效率很低;

2、搭建的測(cè)試服務(wù)器可能無法返回所有可能的值,或者需要大量的工作才能達(dá)到這個(gè)目的。方法二:

使用mock函數(shù)模擬即可。

三、mock應(yīng)用

3.1 mock安裝

在Python 3.3以前的版本中,需要另外安裝mock模塊,可以使用pip命令來安裝:

pip install mock

從Python 3.3開始,mock模塊已經(jīng)被合并到標(biāo)準(zhǔn)庫中,被命名為unittest.mock,可以直接import進(jìn)來使用:

from unittest import mock

備注:目前Python 3.3之后的版本,也可以使用第一種方式應(yīng)用mock

3.2 mock簡(jiǎn)單舉例

from unittest import mockdef add(num1,num2): return num1 + num2 # passadd_value = mock.Mock(return_value=200) # 創(chuàng)建mock對(duì)象add = add_value # 把mock對(duì)象賦值給add方法print( add(10,20) )

從上述代碼執(zhí)行可以看出,假使我把a(bǔ)dd()方法的實(shí)現(xiàn)改為pass,暫時(shí)還未實(shí)現(xiàn),也可以通過mock先返回所需要的數(shù)據(jù)。

3.3 mock應(yīng)用舉例

import requestsdef send_request(url): r = requests.get(url) return r.status_codedef visit_newdream(): return send_request('http://www.hnxmxit.com/')print( visit_newdream() )

上述代碼是訪問我們公司的官網(wǎng),假設(shè)該官網(wǎng)訪問請(qǐng)求還沒被實(shí)現(xiàn),此時(shí) visit_newdream() 方法需要 send_request 返回響應(yīng)狀態(tài)碼。這個(gè)時(shí)候可以用到mock。

# 當(dāng)前文件名為 mock_demo.pyimport unittestfrom unittest import mockimport requestsimport mock_demodef send_request(url): r = requests.get(url) return r.status_codedef visit_newdream(): return send_request('http://www.hnxmxit.com/')class TestClient(unittest.TestCase): def test_success_request(self): success_send = mock.Mock(return_value=’200’) mock_demo.send_request = success_send self.assertEqual(mock_demo.visit_newdream(), ’200’)if __name__=='__main__': unittest.main()

上述代碼完成了mock的簡(jiǎn)單應(yīng)用,由于mock_demo.send_request = success_send 把mock對(duì)象賦值給了方法,使得方法再次調(diào)用的時(shí)候使用了mock的方法完成把模擬返回值傳遞給mock_demo.visit_newdream()方法。

四、小結(jié)

此文基礎(chǔ)的介紹了mock的入門; 讀者實(shí)操出來有一定的想法后完全可以應(yīng)用到接口測(cè)試和單元測(cè)試過程中去。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 久久狠狠躁免费观看2020 | 在线精品免费观看综合 | 久久久久国产成人精品亚洲午夜 | 国产嫩草影院在线观看 | 玖草视频在线 | 99久久免费中文字幕精品 | 亚洲午夜一区二区三区 | 久久99精品视免费看 | www.91久久| 欧美激情一区二区三区高清视频 | 欧美一区二区三区精品 | 日韩freesex呦交 | 亚洲 欧美 精品专区 极品 | 三级黄色片日韩 | 日本加勒比系列 | 久久性生大片免费观看性 | 日本欧美视频 | 一区二区三区中文 | 国产亚洲在线 | 亚洲天堂视频在线观看 | 视频一区二区在线 | 韩国午夜三级理论 | 久久大陆 | 色青青草原桃花久久综合 | 日韩一区二区三区在线 | 草草影院第一页yycccom | 狠狠色狠狠色综合 | 欧美黄色高清 | 欧美另类69xxxxx极品 | free性丰满白嫩白嫩的hd | 日韩特级毛片免费观看视频 | 亚洲在成人网在线看 | 男人的天堂在线免费视频 | 国产精品亚洲精品 | 一区二区三区中文字幕 | 亚洲精品aaa | 日韩三级小视频 | 成人免费视频软件网站 | 中文字幕在线一区二区三区 | 欧美一级免费在线观看 | 欧美日韩国产成人精品 |