激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python Mock模塊原理及使用方法詳解

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

2020-07-08 11:17藍 寅 Python

這篇文章主要介紹了Python Mock模塊原理及使用方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

一、mock是什么?

英譯中含義有:虛假的; 不誠實的; 模仿的; 模擬的 這個意思

這個庫的主要功能就是模擬一些事務

官方解釋:MockPython中一個用于支持單元測試的庫,它的主要功能是使用mock對象替代掉指定的Python對象,以達到模擬對象的行為

二、為什么要用mock?

舉例:

假設你開發一個項目,里面包含了一個登錄模塊,登錄模塊需要調用身份證驗證模塊中的認證函數,該認證函數會進行值的返回,然后系統根據這個返回值來做判斷是否能進行登錄。但是身份證驗證模塊中的認證函數只有在正式上線的系統上才提供。公司內部的測試環境或者開發環境上不提供。

如果此時需要進行登錄模塊的業務測試或接口測試,該如何做?

方法一:

搭建一個測試服務器,在測試的時候,讓認證函數和這個測試服務器交互,返回值給登錄模塊;

缺點:

1、測試服務器可能不好搭建,或者搭建效率很低;

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

使用mock函數模擬即可。

三、mock應用

3.1 mock安裝

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

pip install mock

從Python 3.3開始,mock模塊已經被合并到標準庫中,被命名為unittest.mock,可以直接import進來使用:

from unittest import mock

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

3.2 mock簡單舉例

?
1
2
3
4
5
6
7
8
from unittest import mock
def add(num1,num2):
  return num1 + num2  # pass
 
add_value = mock.Mock(return_value=200) # 創建mock對象
add = add_value # 把mock對象賦值給add方法
 
print( add(10,20) )

從上述代碼執行可以看出,假使我把add()方法的實現改為pass,暫時還未實現,也可以通過mock先返回所需要的數據。

3.3 mock應用舉例

?
1
2
3
4
5
6
7
8
9
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() )

上述代碼是訪問我們公司的官網,假設該官網訪問請求還沒被實現,此時 visit_newdream() 方法需要 send_request 返回響應狀態碼。這個時候可以用到mock。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 當前文件名為 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的簡單應用,由于mock_demo.send_request = success_send 把mock對象賦值給了方法,使得方法再次調用的時候使用了mock的方法完成把模擬返回值傳遞給mock_demo.visit_newdream()方法。

四、小結

  • 此文基礎的介紹了mock的入門;
  • 讀者實操出來有一定的想法后完全可以應用到接口測試和單元測試過程中去。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/dream66/p/13199395.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人免费福利视频 | 国产一区毛片 | 在线看91 | 免费的性生活视频 | 日本看片一区二区三区高清 | 久久亚洲精品国产一区 | 国产精品久久久久久久久久久久久久久久 | 久久久久久久久亚洲精品 | 久久男 | 日韩色电影 | 国产激情视频在线 | 九九色网站 | 欧美一区在线观看视频 | 欧美成年性h版影视中文字幕 | 91精品国产综合久久婷婷香 | 国产欧美亚洲精品 | 在线观看国产 | 91精品国产一区二区三区动漫 | 精品中文字幕在线播放 | 大胆在线日本aⅴ免费视频 美国黄色毛片女人性生活片 | 国产精品欧美久久久久一区二区 | 成人在线视频国产 | 视频在线色 | 午色影院 | 中文字幕在线观看视频www | 91高清免费在线观看 | 欧美一级高潮片免费的 | 天天黄色片 | 欧美激情首页 | 欧美一级黄视频 | 夜夜夜精品视频 | 爱爱视频天天干 | 成人做爽爽爽爽免费国产软件 | 久久综合九色 | 久久福利小视频 | 久久艹艹艹| 91短视频在线观看 | 高清在线国产 | 日韩av片网站 | 沉沦的校花奴性郑依婷c到失禁 | www.精品在线 |