我有这个代码:
//
app1.service.py
database = {
1: "Alice",
2: "Bob",
3: "Charlie"
}
def get_user_from_db(user_id):
return database.get(user_id)
//
app1.tests.test_service.py
import pytest
from unittest import mock
from app1.service import get_user_from_db
@mock.patch("app1.service.get_user_from_db")
def test_get_user_from_db(mock_get_user_from_db):
mock_get_user_from_db.return_value = "Mocked Alice"
username = get_user_from_db(1) # If I change it to mock_get_user_from_db(1) everything works fine
assert username == "Mocked Alice"
当我在命令行中运行“pytest”时,我会得到以下信息:
E AssertionError: assert 'Alice' == 'Mocked Alice'
E - Mocked Alice
E + Alice
在我正在观看的教程中,
get_user_from_db(1)
退货
“嘲笑爱丽丝”,
但在我的本地机器中,它只返回
“爱丽丝”
。我使用时效果很好
username = mock_get_user_from_db(1)
而不是
username = get_user_from_db(1)
问题:在我的情况下,username=get_user_from*db(1)返回“Alice”是预期行为吗?
(在youtube视频中,它返回“嘲笑的爱丽丝”)
还是我只是做错了什么?