folgendes Szenario:
Ich hab ne eigene TestCase Klasse und ich habe mehrere Funktionen darin definiert,
jedoch stellt nicht jede Funktion einen eigenen, validen TestCase dar.
In meiner TestKlasse hab ich ganz unten stehen:
Code: Alles auswählen
if __name__ == '__main__':
def suite():
tests = [
'moonlight',
'sunshine'
]
suite = unittest.TestSuite(map(MyTestCase, tests))
return suite
unittest.TextTestRunner().run(suite())
Mir gefällt dieses Konstrukt aber nicht und ich will, dass meine TestKlasse selber sagt,
welche die validen TestCases (Funktionen) sind.
Wie ich mir das vorgestellt habe (aber es nicht funktioniert!), seht ihr hier:
Code: Alles auswählen
class MyTestCase(unittest.TestCase):
TestCases = set()
def __init__(self):
unittest.TestCase.__init__(self)
for i in dir(self):
if i.startswith('TestCase_'):
self.TestCases.add(i)
def TestCase_sunshine():
pass # run this specific TestCase
def TestCase_moonlight():
pass # run this specific TestCase
def others():
pass # not a real testcase, might be shared/used by real TestCases...
Verwenden wollen würde ich es so, zumindest stell ich es mir so vor...:
Code: Alles auswählen
if __name__ == '__main__':
def suite():
# tests = [
# 'moonlight',
# 'sunshine'
# ]
suite = unittest.TestSuite(map(MyTestCase, MyTestCase.TestCases))
return suite
unittest.TextTestRunner().run(suite())
Ich will nicht manuell angeben, welche TestCases es gibt und ich will
das MyTestCase.TestCases set() auch nicht manuell ausfüllen, das soll automatisch befüllt werden "as I code along".
Wer kann 'was dazu sagen? Ist's überhaupt möglich (denke schon)?
Vielen Dank für eure Antworten & Ideen im Voraus.