Size: a a a

QA — Automation

2021 September 06

А

Алексей in QA — Automation
у вас же в ретурне - функция. Которую вы же в своем коде потом вызыаете с прокидыванием в сигнатуру инта 1 - obj = my_fixture_param(1)
поэтому чтобы "получить результат выполнения фикстуры" вам таки надо передать парамтеры
источник

АК

Артем Кузьменко... in QA — Automation
Это же динамически параметризуемая фикстура (фабрика фикстур, как напписано в доке пайтеста). У меня нет другого способа получить резульат возвращаемый из фикстуры. Там все очень сложно... ))
Вопрос звочит так. Могу ли я как то через хуки или еще каким то образом получить объект obj = my_fixture_param(1) ?
источник

СС

Сказочный Сникерс... in QA — Automation
так раз ты возвращаешь функцию в фикстуре - о каком "результате фикстуры" речь?
источник

СС

Сказочный Сникерс... in QA — Automation
результат фикстуры - функция
источник

АК

Артем Кузьменко... in QA — Automation
да, я понимаю. Моможет можно через какие то служебные свойства получить результат.
источник

А

Алексей in QA — Automation
вы не очень понимаете, что вы используете. Фабрика и параметризованная фикстура - разные вещи. Ответ на ваш вопрос звучит - "да, можно"
источник

А

Алексей in QA — Automation
для этого надо инициализировать факбрику параметрами, как и написано выше
источник

АК

Артем Кузьменко... in QA — Automation
Я понимаю, что можно сделать item.funcargs.get("my_fixture_param")(var), но я не могу гарантировать, что у меня есть стандарт получения var. Когда то он в параметрах теста, а когда то формируется в теле самого теста, а потом передается в фикстуру.
источник

А

Алексей in QA — Automation
если не можете гарантировтаь - не используйте данную конструкцию :)
источник

А

Алексей in QA — Automation
По описанию выглядит как плохой тест дизайн
источник

А

Алексей in QA — Automation
или как какие то лютые костыли
источник

АК

Артем Кузьменко... in QA — Automation
А что использовать? Очень долгая история, фреймворк уже давно написан. Я не могу ничего переделывать или писать заново.
источник

СС

Сказочный Сникерс... in QA — Automation
лучше скажи зачем тебе в pytest_runtest_call результат фикстуры а там мы может че подскажем
источник

А

Алексей in QA — Automation
зависит от задачи. Что вы хотите получать в тесте?
источник

АК

Артем Кузьменко... in QA — Automation
Чтобы получить резултат фикстуры - это объект ORM. А потом мне нужно в pytest_exception_interact приложить данный из ORM в отчет.
источник

СС

Сказочный Сникерс... in QA — Automation
вот этим то мне фикстуры и разонравились в свое время…. но да ладно.

в твоем случае как ты пытаешься сделать не получится. все таки в отличие от классичский фикстур (с параметризацией или без), где результат выполняется единожды на тест, - в твоем случае - это функция и результат ты узнаешь только в теле теста. если эта функция написана норм (без какой либо динамики внутри), то в целом вызвать ее второй раз и получить такой же результат (но не тот же объект) наверное можно.
но если эта функция динамическая (например что то новое создает в бд), то все факап
источник

А

Алексей in QA — Automation
ты его в эксепшн чтоли запихиваешь?
источник

СС

Сказочный Сникерс... in QA — Automation
тебе надо либо отказываться от возвращения функции, либо где то прикапывать ее результат. причем насколько я помню item это не instance теста, это сама тестовая функция. в целом из нее можно докопаться до инстанса теста
источник

АК

Артем Кузьменко... in QA — Automation
Да, бд. Я так и предполагал
источник

СС

Сказочный Сникерс... in QA — Automation
если тест в классе, то можно поместить значение в инстанс (в self) и уже из него забирать в твоих хуках
источник