我遇到的問題與建立嘲諷一些Django的看法。懲戒在Django進口類單元測試
backend.py
class Connector(object):
def get_this():
...
def get_that():
...
view_a.py
from backend import Connector
class AView(View):
def get_context_data(self, **kwargs):
connector = Connector()
things = connector.get_this(...)
view_b.py
class BView(View):
def get_context_data(self, **kwargs):
connector = Connector()
things = connector.get_that(...)
text_view_a.py
class ATest(TestCase):
@mock.patch('backend.Connector')
def test_simple(self, connector_mock):
mi = mock.return_value # The constructor
mi.get_this.return_value = ...
mi.get_that.return_value = ...
response = self.client.get(
reverse('...view_a'),
)
self.assertTrue(mi.get_this.called)
text_view_b.py
class BTest(TestCase):
@mock.patch('backend.Connector')
def test_simple(self, connector_mock):
mi = mock.return_value # The constructor
mi.get_this.return_value = ...
mi.get_that.return_value = ...
response = self.client.get(
reverse('...view_b'),
)
self.assertTrue(mi.get_that.called)
我所看到的行爲,他們都精細單獨工作,但只在運行時結合第一成功,其餘的失敗。基本上看起來只有第一個模擬器被設置/使用。我想這與視圖採取他們自己的導入類的副本有關?
如果是這樣嘲諷後端類的最佳做法?
保羅
我要帶刺,說你的測試行爲不idempotently。你應該確保你正確地處理基於你如何測試你的安裝和拆卸的東西。也許你有一些被保持在所影響,你是不是每次重新設定類的實例類級? – idjaw