Мне нужно выполнить модульное тестирование того, что утверждение поднято в функции командной строки.
click
предоставляет функциональные возможности для тестирования приложений командной строки, а unittest
предоставляет функциональные возможности для проверки того, что утверждения созданы. Моя проблема - объединение двух.
То, что я тестирую, похоже на код ниже. Существует функция с аргументом командной строки и опцией, которая должна быть указана, если этот аргумент имеет определенное значение. По духу это похоже на этот пример:
import unittest
import click
from click.testing import CliRunner
@click.command()
@click.argument('name')
@click.option('--age')
def hello(name, age):
if name == 'Peter' and not age:
raise ValueError('Please specify an age!')
click.echo('Hello %s!' % name)
class TestClickAssertion(unittest.TestCase):
def test_hello_world(self):
with self.assertRaises(ValueError):
runner = CliRunner()
result = runner.invoke(hello, ['Peter'])
print(result)
Проблема, с которой я столкнулся, заключается в том, что при работе с unittest в pycharm я получаю AssertionError: ValueError not raised
, но команда print()
печатает <Result ValueError('Please specify an age!',)>
: что я хочу!
Как мне пройти этот тест?