簡體   English   中英

Python 單元測試被測函數導入的函數

[英]Python Unit test a function imported by the function under test

我正在嘗試對在不同點調用數據庫的代碼進行全面測試。 我能夠模擬被測函數中發生的調用,但我現在還需要存根由被測函數導入的函數。

舉個例子:

lambda_函數:

from competiton.prizes import get_prize

def lambda_handler():
    # This has a call to DB and has been stubbed
    get_entries()
    some_functionality()
    get_prizes()

def get_prizes():
    return get_prizes()

競爭.prizes.common:

from .db import get_from_db

def get_prizes()
    # This is the call I want to mock a return value
    some_info = get_from_db()

我的測試:

class TestLambdaFunction:

    @patch("db.calls.get_from_db", return_value = (200, 100))
    @patch.object(lambda_function, "get_entries")
    def test_level_one_not_reached(self, mock_get_milestones, mock_get_reward):
        x = lambda_function()

雖然我能夠修補被測函數,例如 patch.object,但上面的修補程序調用似乎不起作用,我無法弄清楚。

from .db import get_from_db

def get_prizes()
    # This is the call I want to mock a return value
    some_info = get_from_db()

from.db import get_from_db創建一個使用db.calls.get_from_db get_prizes使用的就是這個新全局名稱。

所以這是您需要修補的名稱,而不是初始化get_from_db的原始來源。

class TestLambdaFunction:

    @patch("competition.prizes.common.get_from_db", return_value = (200, 100))
    @patch.object(lambda_function, "get_entries")
    def test_level_one_not_reached(self, mock_get_milestones, mock_get_reward):
        x = lambda_function()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM