Как мне выполнить юнит-тест на провал тестов? - PullRequest
1 голос
/ 26 сентября 2019

Я пытаюсь начать тестирование носа и TDD самостоятельно.Из того, что я понимаю, смысл модульного тестирования состоит в том, чтобы проверить как можно больше функциональных возможностей функции.Поэтому я хочу добавить недопустимые параметры в мою функцию и убедиться, что это невозможно.Например, я пишу простую функцию добавления

def addBowling(x, y):
    try:
        return x + y
    except TypeError:
        print('Exception occured: invalid types')

Так что для этой функции я хочу, чтобы вводы типа 'a' вызывали исключение.В моих тестах на носу я хочу ввести «а», вот так.

def testAddNumbers():
    assert addBowling(3, 4) == 7
    assert addBowling(5, 0) == 5
    assert addBowling('a', 0) == TypeError

Я хочу получить пару утверждений, которые пройдут, и одно утверждение, которые не пройдут.Когда я запускаю этот тест, он говорит мне, что 1 тест не пройден.Я не уверен, правильно ли я понимаю, но хочу, чтобы этот тест сказал, что он пройден, потому что это правильная функция для моей функции.

Есть ли какие-либо рекомендации о том, как получить результаты, которые я ищу?

1 Ответ

0 голосов
/ 26 сентября 2019

Благодаря полезному комментатору я смог узнать, что повышение рейса - это то, что я искал.Я реорганизовал свою функцию, поэтому теперь все, что она делает, это добавляет и использует повышение assert в моем тесте, например, так.

def addBowling(x, y):
        return x + y

def testAddNumbers():
    assert addBowling(3, 4) == 7
    assert addBowling(5, 0) == 5
    assert_raises(TypeError, addBowling, 'a', 2)

Не забудьте импортировать из nose.tools assert_raises!

...