Доступно ли исправление функции в тестовом сценарии Python? - PullRequest
0 голосов
/ 18 февраля 2019

Это пример.

main / something.py

from example.something import get_utc_time, get_jst_time

print(get_utc_time())
print(get_jst_time())

example / something.py

from django.utils import timezone

def get_utc_time():
    return timezone.now()

def get_jst_time():
    return timezone.now() + timezone.timedelta(hours=9)

Я хочу сделать как следующий тестовый пример.Но это недоступно.
У кого-нибудь есть идеи?

testcase

@patch('main.something.example.something.timezone.now')
def test_execute(mock_now):
    ....

Нужно ли устанавливать обе функции как патч:

@patch('main.something.get_utc_time') и @patch('main.something.get_jst_time')?

1 Ответ

0 голосов
/ 18 февраля 2019

Вам необходимо внести исправления в пространство имен вещи, поведение которой вы хотите изменить.В этом случае вам, вероятно, понадобится:

@patch('example.something.timezone.now')
def test_execute(mock_now):
    mock_now.return_value = 'a mock time'  # probably want to return a time not a string
...