Опитвам се да тествам, ако някоя функция НЕизхвърля всяко изключение, като използва модула за единичен тест. Това възможно ли е? Знам само за метода assertRaises, но този просто тест за изхвърлени изключения и аргумент "Няма" няма да работи за аргумента "Изключения тип" ...
Някакви идеи?
Отговори:
5 за отговор № 1Така че просто се обадете на функцията и ако тя повдигнеизключение ще бъде отчетено като ГРЕШКА, а не като провал, който означава, че вашият кандидат за единичен тест ще спре (няма начин да го продължи), ако искате да го съобщите като неуспех, можете да направите следното:
try:
somefunction()
except:
self.fail("....")
2 за отговор № 2
Ако се случи изключение, тестът ще бъде отбелязан като неуспешен, затова не виждам защо трябва да внушавате нищо. Ако наистина искате, можете винаги да го направите сами:
try:
foo()
except:
raise AssertionError("should not raise exception")
0 за отговор № 3
Аз бях в същия проблем за тестовете ми. mouad & Michael са верни, но за по-чист начин да се справите с твърдение за изключение с последователен метод.
class TestCase(unittest.TestCase):
def assertNoRaise(self, callableObj):
try:
callableObj()
except:
raise AssertionError("shouldn"t raise an exception")
def assertAnyRaise(self, callableObj):
try:
callableObj()
except:
return
raise AssertionError("should raise an exception")
или отделно над класа от наследството, и се смесват с unittest.TestCase. така или иначе щеше да работи
и случай на употреба
class my_test(TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def test_assertion(self):
self.assertAnyRaise(lambda: 1+"a")
self.assertNoRaise(lambda: 1+1)
моля извинете моя лош английски.