我正在使用鼻子测试,并且在两个单独的文件中我有两个测试。单独运行时两者都运行良好,但是当一起运行时,第一个测试的模拟会弄乱第二个测试的结果。如何确保在测试功能完成后重置所有模拟/补丁,以便每次运行都能获得干净的测试?
如果可能的话,通过我的测试来解释将特别感激。我的第一个测试看起来像:
def test_list_all_channel(self):
from notification.models import Channel, list_all_channel_names
channel1 = Mock();
channel2 = Mock();
channel3 = Mock();
channel1.name = "ch1"
channel2.name = "ch2"
channel3.name = "ch3"
channel_list = [channel1, channel2, channel3]
Channel.all = MagicMock()
Channel.all.return_value = channel_list
print Channel
channel_name_list = list_all_channel_names()
self.assertEqual("ch1", channel_name_list[0])
self.assertEqual("ch2", channel_name_list[1])
self.assertEqual("ch3", channel_name_list[2])
我的第二个测试是:
def test_can_list_all_channels(self):
add_channel_with_name("channel1")
namelist = list_all_channel_names()
self.assertEqual("channel1", namelist[0])
但是 Channel.all() 的返回值仍然设置为第一个函数的列表,所以我得到“ch1”不等于“channel1”。有什么建议么?非常感谢!