[mac os high sierra 10.13.6, код Visual Studio 1.39.2]
Я хочу написать модульный тест, который фиксирует исключение ZeroDivisionError.
Когда код записывается в форматеfunction_v1, оба test_v1 и test_v2 работают.
function_v1
def divide(x, y):
if y == 0:
raise ZeroDivisionError("Can not divide by zero!")
return x/y
===
import unittest
import intro.py #the file in which divide function is in
test_v1
class TestCalc(unittest.TestCase):
def test_divide(self):
self.assertRaises(ZeroDivisionError, intro.divide, 1, 0)
test_v2
class TestCalc(unittest.TestCase):
def test_divide(self):
with self.assertRaises(ZeroDivisionError):
intro.divide(1,0)
Как мне написать test_v1 и test_v2, чтобы они работали, когда функция написана так:
function_v2
def divide(x, y):
try:
return x / y
except ZeroDivisionError:
print("Can not divide by zero!")
function_v2 & test_v1, и function_v2 & test_v2 должны обапоказать прохождение тестов, не выдавая сообщений об ошибках и показав, что тесты не пройдены.
Результаты выполнения программы:
Для function_v1 & test_v1 и function_v1 & test_v2:
Ran 1 test in 0.000s
OK
function_v2 & test_v1:
Can not divide by zero!
FAIL: test_divide ( main .TestCalc)
Traceback (most recent call last):
File "/Users/az/Desktop/coreySchafer/test_calc.py", line 35, in test_divide
self.assertRaises(ZeroDivisionError, intro.divide, 1, 0)
AssertionError: ZeroDivisionError not raised by divide
Ran 1 test in 0.001s
FAILED (failures=1)
function_v2 & test_v2
Невозможно разделить на ноль!
FAIL: test_divide ( main .TestCalc)
Traceback (most recent call last):
File "/Users/az/Desktop/coreySchafer/test_calc.py", line 33, in test_divide
intro.divide(1,0)
AssertionError: ZeroDivisionError not raised
Ran 1 test in 0.002s
FAILED (failures=1)