簡體   English   中英

用Python模擬鏈式調用

[英]Mocking chained calls in Python

我試圖使用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的每個值。

假設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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM