[英]Unit test for Python AWS Lambda: mock function before module is imported
[英]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.