Python Mock: неожиданный результат с патчем и return_value - PullRequest
2 голосов
/ 11 апреля 2011

Сначала я опубликую некоторый код, чтобы он был более понятным.

Мой класс:

from tools import get_knife, sharpen

class Banana(object):
    def chop(self):
        knife = get_knife()
        sharpen(knife)

Мой тест:

from mock import patch, sentinel
from banana import Banana

class TestBanana(unittest.TestCase):

    @patch('banana.get_knife')
    @patch('banana.sharpen')
    def test_chop(self, get_knife_mock, sharpen_mock):
        get_knife_mock.return_value = sentinel.knife
        Banana().chop()
        sharpen_mock.assert_called_with(sentinel.knife)

Этот тест не пройден, потому что sharpen_mock не был вызван с возвращаемым значением get_knife_mock.

1 Ответ

4 голосов
/ 11 апреля 2011

Обратите внимание, что декораторы применяются снизу вверх.Это стандартный способ, которым Python применяет декораторы.Порядок созданных макетов, переданных в вашу тестовую функцию, соответствует этому порядку.

http://www.voidspace.org.uk/python/mock/patch.html#nesting-patch-decorators

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...