亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

python 如何在測(cè)試中使用 Mock

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

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

一般有兩種場(chǎng)景:

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

前端mock可以通過(guò)一些工具來(lái)完成:

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

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

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

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

Mock類

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

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

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

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

一個(gè)相對(duì)正式的 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)錯(cuò)誤’)if __name__ == ’__main__’: unittest.main()

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

一個(gè)完整的測(cè)試?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(): ’’’ 待實(shí)現(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():每個(gè)方法之前執(zhí)行') def tearDown(self): print('teardown():每個(gè)方法之后執(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)錯(cuò)誤’) 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)錯(cuò)誤’)if __name__ == ’__main__’: unittest.main()斷言方法

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

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

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

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 在线免费黄 | 真人女人一级毛片免费视频观看 | 国产亚洲精品aa在线看 | 欧美日韩一区在线观看 | 高清一区二区亚洲欧美日韩 | 在线观看亚洲一区二区 | 麻豆视频在线观看 | 99久久国产综合精品麻豆 | 丁香综合激情 | 全国精品影院 | 香蕉人精品视频多人免费永久视频 | 国产在线拍揄自揄拍视频 | 国产福利兔女郎在线观看 | 在线观看免费黄色网址 | 亚洲精品国产第一区第二区国 | 在线观看免费精品国自产 | 黄色片在线免费观看 | 黄色一级一级片 | 免费黄色国产视频 | 97久久天天综合色天天综合色 | 日韩三级黄色 | 91在线日本 | 欧美另类色图 | 日韩毛片 | 达达兔午夜一级毛片 | 91短视频免费在线观看 | 91短视频版高清在线观看免费 | 国产精品久久久久久久久免费hd | 国产精品伦理久久久久 | 日韩精品一区二区在线观看 | 国产人妖自拍 | 久本草在线中文字幕亚洲欧美 | 国产人人爱 | 久久国产高清字幕中文 | 亚洲一级理论片 | 在线免费观看精品 | er久99久热只有精品国产 | 91小视频版在线观看www | 亚洲国产精选 | 嫩草视频网站 | 绝对真实偷拍盗摄高清在线视频 |