cookiecutter

Форк
0
/
test_read_user_choice.py 
41 строка · 1.2 Кб
1
"""Tests around prompting for and handling of choice variables."""
2

3
import pytest
4

5
from cookiecutter.prompt import read_user_choice
6

7
OPTIONS = ['hello', 'world', 'foo', 'bar']
8
OPTIONS_INDEX = ['1', '2', '3', '4']
9

10
EXPECTED_PROMPT = """Select varname
11
    [bold magenta]1[/] - [bold]hello[/]
12
    [bold magenta]2[/] - [bold]world[/]
13
    [bold magenta]3[/] - [bold]foo[/]
14
    [bold magenta]4[/] - [bold]bar[/]
15
    Choose from"""
16

17

18
@pytest.mark.parametrize('user_choice, expected_value', enumerate(OPTIONS, 1))
19
def test_click_invocation(mocker, user_choice, expected_value) -> None:
20
    """Test click function called correctly by cookiecutter.
21

22
    Test for choice type invocation.
23
    """
24
    prompt = mocker.patch('rich.prompt.Prompt.ask')
25
    prompt.return_value = f'{user_choice}'
26

27
    assert read_user_choice('varname', OPTIONS) == expected_value
28

29
    prompt.assert_called_once_with(EXPECTED_PROMPT, choices=OPTIONS_INDEX, default='1')
30

31

32
def test_raise_if_options_is_not_a_non_empty_list() -> None:
33
    """Test function called by cookiecutter raise expected errors.
34

35
    Test for choice type invocation.
36
    """
37
    with pytest.raises(TypeError):
38
        read_user_choice('foo', 'NOT A LIST')
39

40
    with pytest.raises(ValueError):
41
        read_user_choice('foo', [])
42

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.