[Python-de] Frage zu Testabdeckung und Verantwortlichkeiten der jeweiligen Testklasse
Peter Otten
__peter__ at web.de
Fr Dez 20 13:46:53 CET 2013
Thomas Lehmann wrote:
>> Und ansonsten bleibt die Erkenntnis, das coverage nicht alles ist...
>>
>>
>>
>> - Arnold
>
> Ich haben einen Weg gefunden und dies gerade als Rezept veröffentlich:
> http://code.activestate.com/recipes/578793-more-struct-unit-tests-using-a-validator/
>
> Viel Spass
Interessant!
Hier eine Alternative, die nur meckert, wenn die unit tests ausführt werden,
statt gleich eine Exception zu werfen:
def verify(self, testClass):
"""Add a failing test for each testable method without corresponding test method.
"""
methodsInTestClass\
= ValidateTestResponsibilityFor.getEntries(testClass, inspect.isfunction)\
+ ValidateTestResponsibilityFor.getEntries(testClass, inspect.ismethod)
for testableMethod in self.methodsInTestableClass:
testMethod = ValidateTestResponsibilityFor.getTestMethod(testableMethod)
if testMethod not in methodsInTestClass:
setattr(testClass, testMethod,
make_fail(testMethod, self.testableClass.__name__ + "." + testableMethod))
def make_fail(testname, methodname):
"""Create a failing test method.
Example:
def testWhatever(self)
self.fail("No test method " 'whatever')
"""
# Das geht sicher auch besser ohne exec()...
ns = {}
exec ("""\
def %s(self):
self.fail("No test method for " %r)
""" % (testname, methodname), ns)
return ns[testname]
Mehr Informationen über die Mailingliste python-de