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

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

python 如何在測試中使用 Mock

瀏覽:54日期:2022-06-26 16:32:42
Mock概念

mock 的意思是模擬,也就是模擬接口返回的信息,用已有的信息替換它需要返回的信息,從實現(xiàn)對所依賴的模塊的測試。

一般有兩種場景:

前端對后端接口的 mock, 后端服務(wù)之間的測試中涉及的mock,常常發(fā)生在單元測試的時候。

前端mock可以通過一些工具來完成:

使用抓包工具Fiddler,Charles 來實現(xiàn),通過修改代理返回的數(shù)據(jù),實現(xiàn)多種場景的測試。 使用一些API管理工具來模擬,比如yapi,Easy Mock 等 當(dāng)然有編碼能力的,也可以使用node.js,python的fastAPI來模擬

后端的 Mock 則是從接口的角度,如果一個接口A返回的數(shù)據(jù)需要依賴于另一個接口B,當(dāng)敏捷開發(fā)中B接口還未開發(fā)完全時候這里會需要用到 Mock。

對于測試人員,對接口測試的時候,部分接口尚未開發(fā)完成,在約定了接口定義之后,也可以使用 Mock 來模擬。

在 python3.X 中 Mock 模塊已經(jīng)被集成到unittest里面。

Mock類

class Mock(spec=None,side_effect=None,return_value=DEFAULT,name=None)

spec:定義Mock對象的屬性值,可以是一個列表,字符串,一個對象的實例 side_effect:可以用來拋出異常或者動態(tài)改變返回值,可以覆蓋return_value return_value:定義mock的返回值 name:作為mock對象的標(biāo)識可以在print時候看到簡單的例子體驗下 Mock 的功能特點

from unittest import mockdef add(num1,num2): return num1 + num2 # pass add = mock.Mock(return_value=200) # 創(chuàng)建mock對象 print( add(10,20) )

你會發(fā)現(xiàn)無論輸入的參數(shù)是什么,輸出結(jié)果都是200。等于方法被 Mock 攔截處理了。

一個相對正式的 Mock 例子

正常情況:

import requestsdef request_scm(): # res = requests.get(’http://www.mysx-scm.com’) res = requests.get(’http://baidu.com’) return res.status_codeimport unittestfrom unittest import mockclass TestScmApi(unittest.TestCase): def testUrl(self): # request_scm = mock.Mock(return_value=200) self.assertEqual(request_scm(), 200, msg=’testUrl 出現(xiàn)錯誤’)if __name__ == ’__main__’: unittest.main()

可以分別把兩個 # 注釋移到下一句試試。

一個完整的測試?yán)?p>import requestsclass scmapi(): def request_scm(): res = requests.get(’http://www.mysx-scm.com’) # res = requests.get(’http://baidu.com’) return res.status_code def pay_alipay(): ’’’ 待實現(xiàn) return 200 ’’’ return 0 import unittestfrom unittest import mockclass TestScmApi(unittest.TestCase): needmock = True def setUpClass(): print('setUpClass():所有方法之前執(zhí)行') def tearDownClass(): print('tearDownClass():所有方法之后執(zhí)行') def setUp(self): self.scmapi = scmapi() print('setUp():每個方法之前執(zhí)行') def tearDown(self): print('teardown():每個方法之后執(zhí)行') def test_request_scm(self): if self.needmock: scmapi.request_scm = mock.Mock(return_value=200) self.assertEqual(scmapi.request_scm(), 200, msg=’test_request_scm 出現(xiàn)錯誤’) def test_pay_alipay(self): if self.needmock: scmapi.pay_alipay = mock.Mock(return_value=200) self.assertEqual(scmapi.pay_alipay(), 200, msg=’test_pay_alipay 出現(xiàn)錯誤’)if __name__ == ’__main__’: unittest.main()斷言方法

基本的斷言方法提供了測試結(jié)果是True還是False。所有的斷言方法都有一個msg參數(shù),如果指定msg參數(shù)的值,則將該信息作為失敗的錯誤信息返回。

序號 斷言方法 斷言描述 1 assertEqual(arg1, arg2, msg=None) 驗證arg1=arg2,不等則fail 2 assertNotEqual(arg1, arg2, msg=None) 驗證arg1 != arg2, 相等則fail 3 assertTrue(expr, msg=None) 驗證expr是true,如果為false,則fail 4 assertFalse(expr,msg=None) 驗證expr是false,如果為true,則fail 5 assertIs(arg1, arg2, msg=None) 驗證arg1、arg2是同一個對象,不是則fail 6 assertIsNot(arg1, arg2, msg=None) 驗證arg1、arg2不是同一個對象,是則fail 7 assertIsNone(expr, msg=None) 驗證expr是None,不是則fail 8 assertIsNotNone(expr, msg=None) 驗證expr不是None,是則fail 9 assertIn(arg1, arg2, msg=None) 驗證arg1是arg2的子串,不是則fail 10 assertNotIn(arg1, arg2, msg=None) 驗證arg1不是arg2的子串,是則fail 11 assertIsInstance(obj, cls, msg=None) 驗證obj是cls的實例,不是則fail 12 assertNotIsInstance(obj, cls, msg=None) 驗證obj不是cls的實例,是則fail

以上就是python 如何在測試中使用 Mock的詳細(xì)內(nèi)容,更多關(guān)于python 測試中使用Mock的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 全自动五线打端沾锡机,全自动裁线剥皮双头沾锡机,全自动尼龙扎带机-东莞市海文能机械设备有限公司 | 砂尘试验箱_淋雨试验房_冰水冲击试验箱_IPX9K淋雨试验箱_广州岳信试验设备有限公司 | 拉力机-万能试验机-材料拉伸试验机-电子拉力机-拉力试验机厂家-冲击试验机-苏州皖仪实验仪器有限公司 | 硬齿面减速机_厂家-山东安吉富传动设备股份有限公司 | 断桥铝破碎机_铝合金破碎机_废铁金属破碎机-河南鑫世昌机械制造有限公司 | 济南品牌设计-济南品牌策划-即合品牌策划设计-山东即合官网 | 中控室大屏幕-上海亿基自动化控制系统工程有限公司 | 北京中创汇安科贸有限公司| 5nd音乐网|最新流行歌曲|MP3歌曲免费下载|好听的歌|音乐下载 免费听mp3音乐 | 生态板-实木生态板-生态板厂家-源木原作生态板品牌-深圳市方舟木业有限公司 | 灰板纸、灰底白、硬纸板等纸品生产商-金泊纸业 | 阴离子_阳离子聚丙烯酰胺厂家_聚合氯化铝价格_水处理絮凝剂_巩义市江源净水材料有限公司 | 炉门刀边腹板,焦化设备配件,焦化焦炉设备_沧州瑞创机械制造有限公司 | 旋振筛_不锈钢旋振筛_气旋筛_旋振筛厂家—新乡市大汉振动机械有限公司 | 贵州水玻璃_-贵阳花溪闽兴水玻璃厂| 搅拌磨|搅拌球磨机|循环磨|循环球磨机-无锡市少宏粉体科技有限公司 | 粉末冶金-粉末冶金齿轮-粉末冶金零件厂家-东莞市正朗精密金属零件有限公司 | MTK核心板|MTK开发板|MTK模块|4G核心板|4G模块|5G核心板|5G模块|安卓核心板|安卓模块|高通核心板-深圳市新移科技有限公司 | 合肥升降机-合肥升降货梯-安徽升降平台「厂家直销」-安徽鼎升自动化科技有限公司 | 天津暖气片厂家_钢制散热器_天津铜铝复合暖气片_维尼罗散热器 | 乐考网-银行从业_基金从业资格考试_初级/中级会计报名时间_中级经济师 | 亿立分板机_曲线_锯片式_走刀_在线式全自动_铣刀_在线V槽分板机-杭州亿协智能装备有限公司 | 半自动预灌装机,卡式瓶灌装机,注射器灌装机,给药器灌装机,大输液灌装机,西林瓶灌装机-长沙一星制药机械有限公司 | 青州搬家公司电话_青州搬家公司哪家好「鸿喜」青州搬家 | 真空包装机-诸城市坤泰食品机械有限公司 | 防爆电机生产厂家,YBK3电动机,YBX3系列防爆电机,YBX4节防爆电机--河南省南洋防爆电机有限公司 | 书法培训-高考书法艺考培训班-山东艺霖书法培训凭实力挺进央美 | 氢氧化钙设备, 氢氧化钙生产线-淄博惠琛工贸有限公司 | 广东成考网-广东成人高考网 | 股指期货-期货开户-交易手续费佣金加1分-保证金低-期货公司排名靠前-万利信息开户 | 玻璃钢型材-玻璃钢风管-玻璃钢管道,生产厂家-[江苏欧升玻璃钢制造有限公司] | 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 全自动端子机|刺破式端子压接机|全自动双头沾锡机|全自动插胶壳端子机-东莞市傅氏兄弟机械设备有限公司 | WF2户外三防照明配电箱-BXD8050防爆防腐配电箱-浙江沃川防爆电气有限公司 | 叉车电池-叉车电瓶-叉车蓄电池-铅酸蓄电池-电动叉车蓄电池生产厂家 | 超高频感应加热设备_高频感应电源厂家_CCD视觉检测设备_振动盘视觉检测设备_深圳雨滴科技-深圳市雨滴科技有限公司 | 儿童乐园|游乐场|淘气堡招商加盟|室内儿童游乐园配套设备|生产厂家|开心哈乐儿童乐园 | 陕西高职单招-陕西高职分类考试网 | 噪声治理公司-噪音治理专业隔音降噪公司 | 事迹材料_个人事迹名人励志故事 学生作文网_中小学生作文大全与写作指导 | 新型锤式破碎机_新型圆锥式_新型颚式破碎机_反击式打沙机_锤式制砂机_青州建源机械 |