26

私はノーズテストを使用しており、2 つの別々のファイルに 2 つのテストがあります。個別に実行すると両方とも正常に実行されますが、一緒に実行すると、最初のテストのモックが 2 番目のテストの結果を台無しにします。テスト関数が終了した後にすべてのモック/パッチがリセットされ、実行ごとにクリーンなテストが得られるようにするにはどうすればよいですか?

可能であれば、私のテストを通して説明していただければ幸いです。私の最初のテストは次のようになります。

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])

そして、私の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" と等しくありません。助言がありますか?どうもありがとう!

4

1 に答える 1