Параметризация метки Pytest с множественным выбором

#python #pytest

Вопрос:

Я работал с Pytest, и все отлично работает с приведенным ниже примером:

 import pytest  class params:  gpu = -1  test_params = {  # param0,  "gpu": (-1, params.gpu),  # param2,  # param3,  # param4,  # param5, }  @pytest.mark.parametrize(  "line, expected",  test_params.values(),  ids=list(test_params.keys()), ) def test_map(line, expected):  print(line)  assert line == expected   

Я попытался добавить "gpu": ([-1, 1], params.gpu) , чтобы иметь выбор между -1 или 1 в качестве приемлемого значения на случай, если я захочу задать gpu = 1 параметры класса, но тест не удался. Есть какие-либо предложения по включению этого выбора?

Комментарии:

1. assert expected in line если line есть список допустимых значений?

2. ДА. Идея состоит в том, чтобы иметь возможность проверять несколько значений с помощью одного и того же теста. "gpu" может иметь такое же значение = 1 или = 0 или = -1 . Чтобы оптимизировать тесты, я не хочу создавать несколько тестов, а только один, который может быть гибким.

3. Что такое тестируемый код? Что вы на самом деле пытаетесь проверить в тесте?

4. Я пытаюсь проверить, ввел ли пользователь правильные значения в качестве аргументов. Тест работает в одном сценарии, где мы получаем аргументы из файла YAML. Однако, если пользователь хочет изменить только значение, выбранное для графического процессора, как мы можем проверить тест с гибкостью выбора значения графического процессора?

5. Если файл yaml предоставляется пользователем во время выполнения, он не является частью вашего кода, поэтому не должна ли у вас быть функция загрузки и проверки файла конфигурации, и вместо этого эту функцию следует протестировать?