#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 предоставляется пользователем во время выполнения, он не является частью вашего кода, поэтому не должна ли у вас быть функция загрузки и проверки файла конфигурации, и вместо этого эту функцию следует протестировать?