亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2020年07月07日 15:38:12   作者:藍(lán) 寅  
這篇文章主要介紹了Python Mock模塊原理及使用方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

一、mock是什么?

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

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

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

二、為什么要用mock?

舉例:

假設(shè)你開(kāi)發(fā)一個(gè)項(xiàng)目,里面包含了一個(gè)登錄模塊,登錄模塊需要調(diào)用身份證驗(yàn)證模塊中的認(rèn)證函數(shù),該認(rèn)證函數(shù)會(huì)進(jìn)行值的返回,然后系統(tǒng)根據(jù)這個(gè)返回值來(lái)做判斷是否能進(jìn)行登錄。但是身份證驗(yàn)證模塊中的認(rèn)證函數(shù)只有在正式上線的系統(tǒng)上才提供。公司內(nèi)部的測(cè)試環(huán)境或者開(kāi)發(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ù)器可能無(wú)法返回所有可能的值,或者需要大量的工作才能達(dá)到這個(gè)目的。
方法二:

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

三、mock應(yīng)用

3.1 mock安裝

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

pip install mock

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

from unittest import mock

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

3.2 mock簡(jiǎn)單舉例

from unittest import mock
def add(num1,num2):
  return num1 + num2  # pass

add_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),也可以通過(guò)mock先返回所需要的數(shù)據(jù)。

3.3 mock應(yīng)用舉例

import requests
def send_request(url):
  r = requests.get(url)
  return r.status_code

def visit_newdream():
  return send_request("http://www.hnxmxit.com/")

print( visit_newdream() )

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

# 當(dāng)前文件名為 mock_demo.py
import unittest
from unittest import mock
import requests
import mock_demo

def send_request(url):
  r = requests.get(url)
  return r.status_code

def 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í)操出來(lái)有一定的想法后完全可以應(yīng)用到接口測(cè)試和單元測(cè)試過(guò)程中去。

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

相關(guān)文章

  • 表格梳理python內(nèi)置數(shù)學(xué)模塊math分析詳解

    表格梳理python內(nèi)置數(shù)學(xué)模塊math分析詳解

    這篇文章主要為大家介紹了python內(nèi)置數(shù)學(xué)模塊math的分析詳解,文中通過(guò)表格梳理的方式以便讓大家在學(xué)習(xí)過(guò)程中一目望去清晰明了,有需要的朋友可以借鑒參考下
    2021-10-10
  • python程序控制NAO機(jī)器人行走

    python程序控制NAO機(jī)器人行走

    這篇文章主要為大家詳細(xì)介紹了python程序控制NAO機(jī)器人行走,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 實(shí)例講解Python設(shè)計(jì)模式編程之工廠方法模式的使用

    實(shí)例講解Python設(shè)計(jì)模式編程之工廠方法模式的使用

    這篇文章主要介紹了Python設(shè)計(jì)模式編程之工廠方法模式的運(yùn)用實(shí)例,文中也對(duì)Factory Method模式中涉及到的角色作出了解析,需要的朋友可以參考下
    2016-03-03
  • python3讀取csv文件任意行列代碼實(shí)例

    python3讀取csv文件任意行列代碼實(shí)例

    這篇文章主要介紹了python3讀取csv文件任意行列代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • 詳解Python手寫數(shù)字識(shí)別模型的構(gòu)建與使用

    詳解Python手寫數(shù)字識(shí)別模型的構(gòu)建與使用

    這篇文章主要為大家詳細(xì)介紹了Python中手寫數(shù)字識(shí)別模型的構(gòu)建與使用,文中的示例代碼簡(jiǎn)潔易懂,對(duì)我們學(xué)習(xí)Python有一定的幫助,需要的可以參考一下
    2022-12-12
  • Python多進(jìn)程multiprocessing、進(jìn)程池用法實(shí)例分析

    Python多進(jìn)程multiprocessing、進(jìn)程池用法實(shí)例分析

    這篇文章主要介紹了Python多進(jìn)程multiprocessing、進(jìn)程池用法,結(jié)合實(shí)例形式分析了Python多進(jìn)程multiprocessing、進(jìn)程池相關(guān)概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-03-03
  • python數(shù)據(jù)分析之DataFrame內(nèi)存優(yōu)化

    python數(shù)據(jù)分析之DataFrame內(nèi)存優(yōu)化

    pandas處理幾百兆的dataframe是沒(méi)有問(wèn)題的,但是我們?cè)谔幚韼讉€(gè)G甚至更大的數(shù)據(jù)時(shí),就會(huì)特別占用內(nèi)存,對(duì)內(nèi)存小的用戶特別不好,所以對(duì)數(shù)據(jù)進(jìn)行壓縮是很有必要的,本文就介紹了python DataFrame內(nèi)存優(yōu)化,感興趣的可以了解一下
    2021-07-07
  • python 制作磁力搜索工具

    python 制作磁力搜索工具

    這篇文章主要介紹了如何用python 制作磁力搜索工具,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • 基于Python繪制一個(gè)會(huì)動(dòng)的3D立體粽子

    基于Python繪制一個(gè)會(huì)動(dòng)的3D立體粽子

    下周就要到端午節(jié)了,所以本文小編就來(lái)和大家分享一個(gè)有趣的Python項(xiàng)目——繪制會(huì)動(dòng)的3D立體粽子,文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2023-06-06
  • 使用Python編寫一個(gè)Lisp語(yǔ)言的解釋器

    使用Python編寫一個(gè)Lisp語(yǔ)言的解釋器

    這篇文章主要為大家詳細(xì)介紹了如何使用Python編寫一個(gè)簡(jiǎn)單的Lisp語(yǔ)言的解釋器,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11

最新評(píng)論