Я пытаюсь запустить следующее испытаниеПроблемы с функцией assertRaises в Python
self.assertRaises(Exception,lambda:
unit_test.testBasic())
где
test.testBasic()
является
class IsPrimeTest(unittest.TestCase):
def assertRaises(self,exception,callable,*args,**kwargs):
print('dfdf')
temp = callable
super().assertRaises(exception,temp,*args,**kwargs)
def testBasic_helper(self):
self.failIf(is_prime(2))
self.assertTrue(is_prime(1))
где премьер является функцией, и
но в
self.assertRaises(Exception,lambda:
unit_test.testBasic())
функция лямбды оленья кожа генерирует исключение после проверки по
def testBasic_helper(self):
self.failIf(is_prime(2))
self.assertTrue(is_prime(1))
терпит неудачу Может кто-нибудь предлагает решение этой проблемы?
Я попытаюсь объяснить мою проблему, опять же, потому что в моем первом посте я не объяснить это очень хорошо Так вот источник is_prime (х) это просто функция для проверки штрихом номера
защиту is_prime (номер): ПРЕМЬЕР, NOT_PRIME = не is_prime.broken, is_prime.broken , если число == 2: возврата PRIME
if not isinstance(number, int) and not isinstance(number, float):
raise Exception
if number % 2 == 0 or number < 2 or isinstance(number, float):
return NOT_PRIME
max = int(number**0.5) + 1
for i in range(3, max, 2):
if number % i == 0:
return NOT_PRIME
return PRIME
I s_prime.broken = False
класс IsPrimeTest (unittest.TestCase):
def testBasic_helper(self): self.failIf(is_prime(1)) self.assertTrue(is_prime(2)) self.failIf(is_prime(4)) self.failIf(is_prime(6)) self.assertTrue(is_prime(7)) def testBasic(self): return self.testBasic_helper() def testNegative(self): self.failIf(is_prime(-2)) self.failIf(is_prime(-11 ** 3)) def testNonNumber(self): self.assertRaises(Exception,is_prime,'asd') self.assertRaises(Exception,is_prime,self.__class__.__name__) def testRandom(self): for i in range(0,10000): rand = randint(-10000,10000) self.assertEquals(prime(rand),is_prime(rand))
и вот тест, мы можем сказать, что тест тестирует программу, которая является испытание - испытание над тест
класс MetaProgrammingTest (unittest.TestCase): защиту test_decorator (Я): от импорта p10 unit_converter
def celsius_function(val):
return val
self.assertTrue(hasattr(unit_converter(1,2),'__call__'))
decorated = unit_converter(1.8, 32)(celsius_function)
self.assertTrue(hasattr(decorated, '__call__'))
self.assertAlmostEquals(64.4, decorated(val = 18.0))
def test_unit_test(self):
import p10
from p10sample import is_prime as is_prime_actual
unit_test = p10.IsPrimeTest('testBasic')
unit_test.setUp()
is_prime_actual.broken = False
self.assertEquals(None, unit_test.testBasic())
self.assertEquals(None, unit_test.testNegative())
self.assertEquals(None, unit_test.testNonNumber())
self.assertEquals(None, unit_test.testRandom())
is_prime_actual.broken = True
self.assertRaises(Exception,lambda: unit_test.testBasic())
self.assertRaises(Exception, lambda: unit_test.testNegative())
self.assertRaises(Exception, lambda: unit_test.testRandom())
unit_test.tearDown()
я не могу изменить второй тест - тест по испытанию Поэтому выражение self.assertRaises (Exception, лямбда: unit_test.testBasic()) должен остаться unchaged Моя проблема заключается в том, что когда функция testBasic() сбой, например, если у нас есть self.assertFailIf (is_prime (2)), self.assertfailIf генерирует исключение, unit_test.testBasic() выдает одно и то же исключение в верхнюю область, но lambda: unit_test.testBasic() does not throws исключение и проверка self.assertRaises (исключение, лямбда: unit_test.testBasic()) не работает Мой вопрос заключается в том, как сделать функцию testBasic() так, чтобы лямбда: unit_test.testBasic() будет отражать exceotion и selfassertRaises не подведет, любые идеи?
Код отформатирован только для обозначения линий с четырьмя пробелами, не добавляя '>'. Это цитата. –