Пересмешные звонки в Python - PullRequest
3 голосов
/ 16 марта 2011

Я пытаюсь проверить следующий класс, используя unittest и библиотеку mock:

class Connection(object):
    def __init__(self, cookie):
    self.connect = None
    self.session = Session()
    self.session.load(cookie)
    # do some stuff with self.session
    self.some_info = self.session.data['the_info']

Как я могу проверить, если при создании экземпляра Connection в зависимости от возвратадля экземпляра Session я утверждаю, что self.some_info соответствует ожидаемому значению?

Я хочу использовать библиотеку макетов.В его документации у меня есть пример ложных вызовов (http://www.voidspace.org.uk/python/mock/examples.html#mocking-chained-calls),), но не очень ясно, как я могу адаптировать его к моей проблеме.

Метод Session.load(cookie) устанавливает некоторые атрибуты вэкземпляр Session. Я хотел бы установить фиксированные значения для моих тестов для каждого значения cookie.

1 Ответ

3 голосов
/ 16 марта 2011

Предположим, Connection находится в модуле package.module.connection

Следующий код должен быть таким, каким вы будете тестировать сеанс:

import mock


class TestConnection(unittest.TestCase):

    @mock.patch('package.module.connection.Session')
    def test_some_info_on_session_is_set(self, fake_session):
        fake_session.data = {'the_info': 'blahblah'}
        cookie = Cookie()
        connection = Connection(cookie)
        self.assertEqual(connection.some_info, 'blahblah')
        fake_session.load.assert_called_once_with(cookie)
...