Ich habe einige widersprüchliche Hinweise zur Verwendung von assert
in der setUp
Methode eines Python-Unit-Tests gelesen. Ich kann den Schaden nicht sehen, der einen Test versagt, wenn eine Vorbedingung, die auf Test beruht, ausfällt.Wie kann man einen Fehler in einem Python-Komponententest in der setUp-Methode korrekt melden?
Zum Beispiel:
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()
Dies scheint eine vernünftige Sache zu mir tun heißen sicherzustellen, dass der Test in der Lage zu laufen. Wenn dies aufgrund der Setup-Zustand nicht erhalten wir:
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)
So, wie Sie das in einer automatisierten Build-Umgebung hervorheben sollen? –
@JonCage IMHO Wenn Sie wirklich Vorbedingungen testen müssen, sollten Sie einen Test für sie schreiben und 'setUp()' nicht verwenden, um zu bestätigen, dass Ihre Vorbedingungen gültig sind. Fügen Sie also einen Test wie 'test_load_fixture (self): self.assertIsNotNone (self.content," Fehler beim Laden von Testdaten ")' hinzu und Sie erhalten einen Fehler für diesen Test und einen Fehler für jeden Test, der 'self.content verwendet '. –