Как написать модульный тест для ZeroDivisionError, используя try кроме формата - PullRequest
0 голосов
/ 26 октября 2019

[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)
...