Przeczytałem kilka sprzecznych porad dotyczących korzystania z metody assert
w teście jednostek Pythona. Nie widzę szkody w nieudanej próbie, jeśli warunek wstępny, którego test opiera się na niepowodzeniu.Jaki jest poprawny sposób zgłaszania błędu w unittest Python w metodzie setUp?
Na przykład:
import unittest
class MyProcessor():
"""
This is the class under test
"""
def __init__(self):
pass
def ProcessData(self, content):
return ['some','processed','data','from','content'] # Imagine this could actually pass
class Test_test2(unittest.TestCase):
def LoadContentFromTestFile(self):
return None # Imagine this is actually doing something that could pass.
def setUp(self):
self.content = self.LoadContentFromTestFile()
self.assertIsNotNone(self.content, "Failed to load test data")
self.processor = MyProcessor()
def test_ProcessData(self):
results = self.processor.ProcessData(self.content)
self.assertGreater(results, 0, "No results returned")
if __name__ == '__main__':
unittest.main()
To wydaje się rozsądnym rozwiązaniem dla mnie to upewnij się, że test jest w stanie uruchomić. Gdy to nie ze względu na stan instalacji otrzymujemy:
F
======================================================================
FAIL: test_ProcessData (__main__.Test_test2)
----------------------------------------------------------------------
Traceback (most recent call last):
File "C:\Projects\Experiments\test2.py", line 21, in setUp
self.assertIsNotNone(self.content, "Failed to load test data")
AssertionError: unexpectedly None : Failed to load test data
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (failures=1)
Więc jak należy podkreślić, że w zautomatyzowanym środowisku kompilacji? –
@JonCage IMHO, jeśli naprawdę potrzebujesz przetestować warunki wstępne, powinieneś napisać test dla nich i nie używać 'setUp()', aby potwierdzić, że twoje warunki wstępne są prawidłowe. Dodaj test, taki jak 'test_load_fixture (self): self.assertIsNotNone (self.content," Nie udało się załadować danych testowych ")' i będziesz mieć błąd dla tego testu i niepowodzenie dla każdego testu, który używa 'self.content '. –