from unittest import mock import pytest import sys from magicli import magicli @pytest.mark.parametrize('inputs, output', ( ('appname command --name=Name --amount=3', 'Hello Name!\nHello Name!\nHello Name!\n'), ('appname command Name 3', 'Hello Name!\nHello Name!\nHello Name!\n'), ('appname command', 'Hello World!\n'), ('command magicli 2', 'Hello magicli!\nHello magicli!\n'), )) def test_valid_command_line_arguments(inputs, output, capsys): args = inputs.split() with mock.patch('sys.argv', args): magicli(exclude=['test_valid_command_line_arguments']) out, err = capsys.readouterr() assert out == output def command(name='World', amount=1): for _ in range(int(amount)): print(f'Hello {name}!')