/ / Как да използвам Python unittest assertRaises, за да тествам тази функция, която не прави изключение? - питън, изпитване на единица, твърдения

Как да използвате Python unittest assertRaises, за да изпробвате тази функция, която не прави изключение? - питън, изпитване на единица, твърдения

Опитвам се да тествам, ако някоя функция НЕизхвърля всяко изключение, като използва модула за единичен тест. Това възможно ли е? Знам само за метода 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)

моля извинете моя лош английски.