Как выполнить модульный тест, чтобы проверить, что ввод не является нулевым в Python - PullRequest
0 голосов
/ 04 июля 2019

Я впервые пытаюсь написать модульный тест на Python.У меня есть простая функция, подобная этой:

def sum_num(a, b):
  return a+b

Я хочу выполнить модульный тест, чтобы проверить, что вход (a, b) не равен нулю, а выход не равен нулю.

import unittest

class SumTest(unittest.TestCase):
    def test_sum_output_not_null(self):
        self.assertTrue(add_num(3,4))

    def test_sum_input_not_null(self):
        # How to check input (a and b) is not None ?
        self.assertIsNotNone(a)
...

suite = unittest.TestLoader().loadTestsFromTestCase(SumTest)
runner = unittest.TextTestRunner(verbosity=2)
runner.run(suite)

Я получаю ошибки в модульном тесте ..

test_sum_input_not_null (__main__.SumTest) ... ERROR
test_sum_output_not_null (__main__.SumTest) ... ok

======================================================================
ERROR: test_sum_input_not_null (__main__.SumTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "<command-1933936>", line 7, in test_sum_input_not_null
    self.assertIsNotNone(a)
NameError: name 'a' is not defined

----------------------------------------------------------------------
Ran 2 tests in 0.000s

FAILED (errors=1)
Out[4]: <unittest.runner.TextTestResult run=2 errors=1 failures=0>

Как проверить, что a и b не равны NULL?Также, вероятно, хотите проверить, что a и b также являются целыми числами.Я где-то читал о настройке ().Нужно ли это делать для проверки входных данных для функции?

1 Ответ

1 голос
/ 04 июля 2019

Я хочу выполнить модульный тест, чтобы проверить, что вход (a, b) не равен нулю, а выход не равен нулю.

Либо вы еще не поняли цель тестирования, либо задаете вопрос, связанный с TDD.

Вы не проверяете котировку, вы проверяете, хорошо ли работает ваша функция, когда возникает такое условие.

Итак, вы должны создать тестовую функцию (и) и сделать внутри нее вызов, например:

def test_when_a_is_null(self):
    self.assertIsNotNone(add_num(None, 5))

и аналогичные, когда b равно None, а когда оба равны None.

Но это означает, что ваша функция должна соответствовать следующим условиям:

def add_num(a, b):
    if a is not None and b is not None:
        return a + b
    elif a is not None:
        return a
    elif b is not None:
        return b
    return 0
...