unittest學習記錄mock 04

2021-10-04 14:52:16 字數 2457 閱讀 3264

1.什麼是mock

unittest.mock是乙個用於在python中進行單元測試的庫,mock翻譯過來就是模擬的意思,顧名思義這個庫的主要功能是模擬一些東西。

它的主要功能是使用mock物件替代掉指定的python物件,以達到模擬物件的行為。

學過python自動化的對unittest並不陌生,unittest其實是單元測試框架,

但對於單元測試,估計很多小夥伴都不懂,單元測試才是自動化測試的至高境界,其中mock是單元測試的脊髓所在

2.mock能做什麼:

1.前後端聯調,如果你是乙個前端頁面開發,現在需要開發乙個功能:    下乙個訂單,支付頁面的介面,根據支付結果,支付成功,展示支付成功頁,支付失敗,展示支付失敗頁。    要完成此功能,你需要呼叫後端的介面,根據返回給你的結果,來展示不同的頁面。此時後端介面還沒開發好,

作為乙個前端開發總不能等別人開發好了,你再開發,那你只有加班的命了。    為了同步開發完成任務,此時,你可以根據介面文件的規定,把介面的位址和入參傳過去,然後自己mock介面的不同返回介面,來完成前端的開發任務    2.單元測試,單元測試的目的是測試某個小小單元的功能,但現實中開發的函式或方法都是有依賴關係的,比如b函式的引數,需要呼叫a函式的返回結果,但是我前面已經測試a函式了    這種情況下,就不需要再測一次a函式了,此時就可以用mock模組來模擬呼叫這部分內容,並給出返回結果    3.第三方介面依賴,在做介面自動化的時候,有時候需要呼叫第三方的介面,但是別人公司的介面服務不受你的控制,有可能別人提供的測試環境今天服務給你開著,別人就關掉了,

給自動化介面測試帶來很多的麻煩,此時就可以自己寫乙個mock-server來模擬介面的返回資料

函式**temple.py:

# coding:utf-8

def zhifu():

'''假設這裡是乙個支付的功能,未開發完

支付成功返回:

支付失敗返回:

reason返回失敗原因

'''pass

# 本介面return值

def zhifu_statues():

'''根據支付的結果success or fail,判斷跳轉到對應頁面'''

result = zhifu()

# print(result)

try:

if result["result"] == "success":

print("success")

return "支付成功"

elif result["result"] == "fail":

print("失敗原因:%s" % result["reason"])

return "支付失敗"

else:

return "未知錯誤異常"

except:

return "error, 服務端返回異常!"

測試**test_temple.py:

# coding:utf-8

from unittest import mock

import unittest

from . import temple

class test_zhifu_statues(unittest.testcase):

'''單元測試用例'''

@mock.patch("temple.zhifu")

def test_01(self, mock_zhifu):

'''測試支付成功場景'''

# 方法一:mock乙個支付成功的資料

# temple.zhifu = mock.mock(return_value=)

# 方法二:mock.path裝飾器模擬返回結果

# 方法三:如果被測的是物件導向,

# @mock.patch("temple_class.zhifu")

# a = mock_zhifu.return_value # 先返回例項,對類名稱替換

# 通過例項呼叫方法,再對方法的返回值替換

# a.zhifu.return_value =

mock_zhifu.return_value =

# 根據支付結果測試頁面跳轉

statues = temple.zhifu_statues()

print(statues)

self.assertequal(statues, "支付成功")

def test_02(self):

'''測試支付失敗場景'''

# mock乙個支付成功的資料

temple.zhifu = mock.mock(return_value=)

# 根據支付結果測試頁面跳轉

b1 = temple.zhifu_statues() # zhifu_statues()返回值給乙個變數接收

self.assertequal(b1, "支付失敗")

if __name__ == "__main__":

unittest.main()

學習記錄 unittest方法使用,斷言

開始,結束,測試用例,import unittest class usertestcase unittest.testcase 所有類中方法的入參為self,定義方法的變數也要self.變數 defsetup self print set up 開始 def teardown self print ...

學習記錄 unittest 斷言的使用day1

建立calculator.py class calculator def init self,a,b self.a int a self.b int b 加法def add self return self.a self.b 減法defsub self return self.a self.b 乘法...

unittest框架學習

一 unittest中最核心的四部分是 testcase,testsuite,testrunner,testfixture 1 乙個testcase的例項就是乙個測試用例。測試用例就是指乙個完整的測試流程,包括測試前準備環境的搭建 setup 執行測試 run 以及測試後環境的還原 teardown...