Używam testów nosa i w dwóch oddzielnych plikach Mam dwa testy. Obydwa działają poprawnie, gdy są uruchamiane pojedynczo, ale gdy biegną razem, próbne wyniki pierwszego testu przeniosą wyniki w drugim teście. W jaki sposób mogę się upewnić, że wszystkie makiety/poprawki zostaną zresetowane po zakończeniu funkcji testowej, aby uzyskać czysty test przy każdym uruchomieniu?Python - Jak odblokować/zresetować próbę podczas testowania?
W miarę możliwości wyjaśnienie moich testów będzie szczególnie docenione. Mój pierwszy test wygląda następująco:
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])
A mój drugi test jest:
def test_can_list_all_channels(self):
add_channel_with_name("channel1")
namelist = list_all_channel_names()
self.assertEqual("channel1", namelist[0])
Ale wartość zwracana z Channel.all() jest nadal ustawiony na liście od pierwszej funkcji więc dostać ` "ch1" nie jest równe "channel1". Jakieś sugestie? Dziękuję bardzo!
Co powiesz na funkcje Mock poza łatką? Czy jedynym sposobem na zrobienie tego jest łatanie ich na początku? – golmschenk
Tak. Zalecam używanie wbudowanej struktury unittest. W ten sposób możesz mieć metody setUp i tearDown do tworzenia/niszczenia poprawek. –
hi @ jjia6395 wydaje się, że brakuje nawiasu lub jest za dużo? –