Я работал над pyTest. Так что в данном случае один и тот же pyTest имеет несколько тестовых данных, однако разные тестовые данные имеют разные настройки в приборе. Я просматриваю документацию по pyTest и выясняю, как выполнять оба этих действия независимо, используя функцию parametrized
, как показано ниже:
Для тестовых данных, управляемых данными: @pytest.mark.parametrize('valid_data', test_data, ids=test_data_ids)
В этом случае test_data
- это файл json, который имеетоколо 6 различных тестовых данных и test_data_ids
- список идентификаторов тестовых данных.
Затем для передачи параметров в прибор: @pytest.mark.parametrize('setup_person', [['student']], indirect=True)
. В этом случае setup_person
- это имя моего прибора, student
- один из параметров, принятых этим прибором.
Однако теперь мне нужно, чтобы они оба были объединены в работу, я не могу найти никаких документов или ресурсов оэто. Чего я хочу добиться, так это тестирования на основе данных при отправке различных параметров в прибор. Вот мой прибор:
@pytest.fixture(params=['student', 'teacher', 'outsider'])
def setup_person(request):
if request.param is 'student':
setup = 'This is student.'
elif request.param is 'teacher':
setup = 'This is teacher.'
elif request.param is 'outsider':
setup = 'This is outsider'
else:
setup = 'Incorrect parameter passed'
return setup
Это простой пример того, как выглядит мой прибор, так как вы можете видеть, что у меня есть 3 параметра в приборе, и каждый из них возвращает разные вещи в тест.
Вот так выглядит мой тест:
@pytest.mark.parametrize('setup_person', [['student']], indirect=True)
@pytest.mark.parametrize('valid_data', test_data, ids=test_data_ids)
def test_person(setup_person, valid_data):
response = setup_person
assert response == 'This is student.'
Однако, когда я попытался объединить обе параметризованные функции, кажется, что параметр student
будет передан только один раз, когда первая параметризациявыполняется, тогда второй параметр с тестовыми данными не пройдет student
, и прибор также не будет сохранен.
Таким образом, когда я запускаю тест, всегда происходит переход к части else
, потому что ничего не пропускается, когда я запускаю параметризованную функцию тестовых данных.
Есть ли другой способ, которымЯ могу объединить обе функции вместе или есть другой обходной путь для этого? Спасибо за чтение, и я ценю любую помощь!