电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

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

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

一、mock是什么?

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

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

官方解釋:Mock是Python中一個用于支持單元測試的庫,它的主要功能是使用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簡單舉例

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

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

3.3 mock應用舉例

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() )

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

# 當前文件名為 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的簡單應用,由于mock_demo.send_request = success_send 把mock對象賦值給了方法,使得方法再次調用的時候使用了mock的方法完成把模擬返回值傳遞給mock_demo.visit_newdream()方法。

四、小結

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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 冷库安装厂家_杭州冷库_保鲜库建设-浙江克冷制冷设备有限公司 | 防弹玻璃厂家_防爆炸玻璃_电磁屏蔽玻璃-四川大硅特玻科技有限公司 | 分类168信息网 - 分类信息网 免费发布与查询 | 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | 挤出机_橡胶挤出机_塑料挤出机_胶片冷却机-河北伟源橡塑设备有限公司 | 耐破强度测试仪-纸箱破裂强度试验机-济南三泉中石单品站 | 懂研帝_专业SCI论文润色机构_SCI投稿发表服务公司 | 恒温水槽与水浴锅-上海熙浩实业有限公司 | 澳威全屋定制官网|极简衣柜十大品牌|衣柜加盟代理|全屋定制招商 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | 黄石妇科医院_黄石东方女子医院_黄石东方妇产医院怎么样 | 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | 上海地磅秤|电子地上衡|防爆地磅_上海地磅秤厂家–越衡称重 | _网名词典_网名大全_qq网名_情侣网名_个性网名 | 胶辊硫化罐_胶鞋硫化罐_硫化罐厂家-山东鑫泰鑫智能装备有限公司 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 接地电阻测试仪[厂家直销]_电缆故障测试仪[精准定位]_耐压测试仪-武汉南电至诚电力设备 | 识禅_对禅的了解,从这里开始| 猎头招聘_深圳猎头公司_知名猎头公司 | 杭州实验室尾气处理_实验台_实验室家具_杭州秋叶实验设备有限公司 | 坏男孩影院-提供最新电影_动漫_综艺_电视剧_迅雷免费电影最新观看 | 北京易通慧公司从事北京网站优化,北京网络推广、网站建设一站式服务商-北京网站优化公司 | 上海律师事务所_上海刑事律师免费咨询平台-煊宏律师事务所 | 丹尼克尔拧紧枪_自动送钉机_智能电批_柔性振动盘_螺丝供料器品牌 | 企业彩铃制作_移动、联通、电信集团彩铃上传开通_彩铃定制_商务彩铃管理平台-集团彩铃网 | SDG吸附剂,SDG酸气吸附剂,干式酸性气体吸收剂生产厂家,超过20年生产使用经验。 - 富莱尔环保设备公司(原名天津市武清县环保设备厂) | 皮带输送机-大倾角皮带输送机-皮带输送机厂家-河南坤威机械 | 南京展台搭建-南京展会设计-南京展览设计公司-南京展厅展示设计-南京汇雅展览工程有限公司 | 专业广州网站建设,微信小程序开发,一物一码和NFC应用开发、物联网、外贸商城、定制系统和APP开发【致茂网络】 | 东莞市超赞电子科技有限公司 全系列直插/贴片铝电解电容,电解电容,电容器 | 高压绝缘垫-红色配电房绝缘垫-绿色高压绝缘地毯-上海苏海电气 | 刚性-柔性防水套管-橡胶伸缩接头-波纹管补偿器-启腾供水材料有限公司 | 真石漆,山东真石漆,真石漆厂家,真石漆价格-山东新佳涂料有限公司 | 皮带输送机-大倾角皮带输送机-皮带输送机厂家-河南坤威机械 | Boden齿轮油泵-ketai齿轮泵-yuken油研-无锡新立液压有限公司 | 北京签证代办_签证办理_商务签证_旅游签证_寰球签证网 | 电梯装饰-北京万达中意电梯装饰有限公司 | 加中寰球移民官网-美国移民公司,移民机构,移民中介,移民咨询,投资移民 | 南京泽朗生物科技有限公司-液体饮料代加工_果汁饮料代加工_固体饮料代加工 | 山东限矩型液力偶合器_液力耦合器易熔塞厂家-淄博市汇川源机械厂 | 交变/复合盐雾试验箱-高低温冲击试验箱_安奈设备产品供应杭州/江苏南京/安徽马鞍山合肥等全国各地 |