3

我正在尝试使用unittestmock库测试以下类:

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值的测试设置这个固定值。

4

1 回答 1

3

假设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)
于 2011-03-16T00:38:53.397 回答