Задать вопрос
@conopus
QAA

Как передать фикстуру в параметры теста pytest?

Первый тест API проверяет получение списка сущностей. Фикстура в случае успеха отдает список сущностей. Вторым тестом я хочу пройтись по этому списку и запросить данные по каждой из сущностей. Как передать список в параметры второго теста?
  • Вопрос задан
  • 854 просмотра
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 2
Ommonick
@Ommonick
qa+dev (scala, golang, ts/js, api, grpc)
Мне непонятно :)
Фикстура - это вроде подготовленные объекты, которые можно использовать. Фикстурой может быть как запрос так и объект, который возвращается в этом запросе.

Абстрагируемся от фикстур. Тестируется API? Позвольте перефразирую ваш вопрос.
Первый метод возвращает список сущностей GET /items -> response {items: [{obj},{obj},{obj}]} (так?)
А второй отдает инфу о конкретном obj по его id например GET /item?id=1 -> response {obj}
тогда мы можем взять items из первого и пробежаться по массиву, вызвав для каждого элемента второй метод
псевдокод:
response = GET("/items")
items = response.body.items
for i, element in items {
response = GET("/item", id=element.id)
assert.equal(response.id, element[i].id) 
}


много зависит от реализации api, но чаще всего именно так
Ответ написан
Комментировать
@conopus Автор вопроса
QAA
Егор Оммоник, благодарю за ответ. Я с вами согласен и именно так в итоге это и сделал. Но, это не ответ на мой вопрос из заголовка.
Pytest имеет очень удобный механизм фикстур с их скоупами и также удобную параметризацию тестов и фикстур. Но, объеденить их у меня не получилось: способа использовать фикстуры в параметрах я так и не нашел. Возможно, это архитектурное ограничение и его невозможно обойти. Возможно, что я плохо искал или существует элегантный work around. Вот это я и хотел выяснить.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы