Open gennadii-borodin opened 1 year ago
просьба указать версии пакетов, которые используются и какой параметр указывается в AdapterMode.
Версии пакетов:
testit-adapter-pytest 2.0.8 testit-api-client 2.0.3 testit-python-commons 2.0.8
adapterMode = 0
добавьте входные параметры к тесткейсу https://docs.testit.software/user-guide/sekcii/ispolzovanie-parametrov.html и попробуйте запустить еще раз
Добавил входные параметры в тест
Добавил тест в план (их стало 2 по количеству параметров)
Запустил прогон автотестов Раскрыл один инстанс теста Раскрыл второй инстанс теста
В случае есть тесты помечены декоратором: @testit.externalId("test_checkstatus[{users}]") При этом ручной тест-кейс корректно связывается с автоматизированными. Но есть выполнять запуск через CI (Например GitLab). В результате запуска тестов ни одного теста не запускается. Версия библиотеки testit-adapter-pytest==2.0.8 testit-api-client==2.0.2 testit-python-commons==2.0.8
... INTERNALERROR> File "/usr/local/lib/python3.9/site-packages/testit_adapter_pytest/listener.py", line 94, in pytest_collection_modifyitems INTERNALERROR> raise SystemExit INTERNALERROR> SystemExit ============================ no tests ran in 3.40s =============================
При этом если в выполняется запуск тестов в связке 1:1. то все завершается успешно. В чем может быть проблема ? Не распарсивается параметр в декораторе?
Добавил входные параметры в тест
Добавил тест в план (их стало 2 по количеству параметров)
Запустил прогон автотестов Раскрыл один инстанс теста Раскрыл второй инстанс теста
В вашем случая я рекомендую не использовать параметры в декораторах externalId и displayName. В этом случае у вас будет создана только одна карточка автотеста, которая будет прилинкована к тест кейсу. В тест кейсе вы должны задать все параметры, которые принимает тест. И после этого у вас все успешно сопоставится
В случае есть тесты помечены декоратором: @testit.externalId("test_checkstatus[{users}]") При этом ручной тест-кейс корректно связывается с автоматизированными. Но есть выполнять запуск через CI (Например GitLab). В результате запуска тестов ни одного теста не запускается. Версия библиотеки testit-adapter-pytest==2.0.8 testit-api-client==2.0.2 testit-python-commons==2.0.8
... INTERNALERROR> File "/usr/local/lib/python3.9/site-packages/testit_adapter_pytest/listener.py", line 94, in pytest_collection_modifyitems INTERNALERROR> raise SystemExit INTERNALERROR> SystemExit ============================ no tests ran in 3.40s =============================
При этом если в выполняется запуск тестов в связке 1:1. то все завершается успешно. В чем может быть проблема ? Не распарсивается параметр в декораторе?
Пришлите тестовый проект и как в системе это у вас отображается
А дайте скриншот со страницы https://
И еще вопрос, у вас только externalID параметризирован или displayName тоже? Попробуйте оба параметризировать.
У меня похожая проблема была на ранних версиях адаптера из-за того, что в в ТМС из адаптера не уходило параметризированное название.
В вашем случая я рекомендую не использовать параметры в декораторах externalId и displayName. В этом случае у вас будет создана только одна карточка автотеста, которая будет прилинкована к тест кейсу. В тест кейсе вы должны задать все параметры, которые принимает тест. И после этого у вас все успешно сопоставится
При такой организации тестраны стали заканчиваться и в них записываются результаты тестов. Однако, при таком подходе из интерфейса ТМС не видно какой именно параметр упал пока не пойдешь смотреть и разбирать приложенный код.
Ну и попутно мелкий бажок в ui
В плашке тест рана зелёный индикатор горит для упавшего теста
Да, тут вы правы. Мы планируем переработать данный функционал и выпустить в следующих версиях TMS.
Этот индикатор относится к тестрану.
Коллеги и все-таки, как побороть зависший тест-ран (запущенный из тест-плана) с параметризацией?
В моем случае я не добавляю каких либо параметров в декораторы библиотеки testit workItemIds, externalId и тд. Там везде str и нет никаких переменных. Но стоит добавить хоть один параметр через декоратор @pytest.mark.parametrize("var", ["1"]), то в тест-плане происходит зависание теста в статусе "В процессе". Прочитал всю ветку, и по советам в предыдущих ответах добавил параметр в тест-кейс, назвал его так же как и в коде, но и это не помогло, тест виснет.
Работаю на таких версиях:
testit-adapter-pytest==2.0.10
testit-python-commons==2.0.10
testit-api-client==2.0.4
@atsyatkovskiy у меня сейчас два почти одинаковых теста, оба с параметризацией один корректно работает, другой зависает в тестране и для него с Pytest приходит законченный прогон
Ребят, а есть в итоге адекватное решение этой проблемы с параметризированными тестами? У меня на Java + Selenide тоже аналогичная проблема сейчас.
Чтобы запускать и получать результаты для параметризованных тестов из тест-плана вам необходимо в ручной тест передать те же параметры. Подробнее можно в документации testit посмотреть как параметры создать
Уважаемые коллеги, почините, пожалуйста, баг, чтобы заявленный функционал заработал хотя бы с вышепредложенными костылями https://github.com/testit-tms/adapters-python/issues/43#issuecomment-1357471636 , так как в видеоинструкции в разделе документации https://docs.testit.software/user-guide/autotests/launch-autotests-from-ui.html у вас четко заявлена возможность запускать параметризованные тесты с декоратором @pytest.mark.parametrize, но это уже очень давно не работает. У нас большая часть тестов написана с параметризацией буквально в каждом из десятков проектов. Данный функционал оказался критически важным.
Мой кейс: Окружение: testit-adapter-pytest==3.2.2 └── testit-python-commons [required: ==3.2.2, installed: 3.2.2] └── testit-api-client [required: ==4.0.0, installed: 4.0.0]
Шаги:
Тест написан согласно рекомендациям без параметров в @displayName и @externalID :
class TestCreateAutotagFilterMode:
@pytest.mark.parametrize(
"save_btn_func",
[
("save_and_create_autotag",),
("click_save_btn",),
],
)
@pytest.mark.autocoll_ui_psi
@pytest.mark.autocoll_ui_debug
@pytest.mark.usefixtures("open_main_page", "add_autotag")
@displayName(f"Выбор опции {SAVE_CREATE_NEW_AUTOTAG_BTN} при создании автотега")
@workItemIds("195842")
@externalID("test_external_id_for_195842")
def test_create_autotag_save_options(
self,
autotag_page,
save_btn_func,
create_new_tag,
):
with step("Заполнение полей формы корректными данными."):
...
Ручной тест 195842 с добавлением параметров из параметрайз
Ручной тест связан с автотестом 218763
В тестплан добавлен набор и один ручным тестом 195842, который после добавления превратился в 2, как вроде и должно быть, так как он параметризован двумя наборами данных
При запуске из гитлаба пайплайн имеет такой маркер, что запускаются 10 автотестов , в которые входит параметризованный 195842, указанный в шаге 1. Все тесты проливаются в прогон. Параметризованный тест 195842 имеет два автотеста с айди 218763 (2 верхних в списке)
После запуска набора из одного теста (сделанного на шаге 4) из вебинтерфейса путем отправки вебхука, стартует пайплайн с точно таким же маркером, как при запуске на шаге 5 (10 тестов в числе которых 195842) Ожидаемый результат: Прогон завершился, результаты пролились в тестплан. Актуальный результат: После завершения пайплайны запуск в testIT не завершается, навечно остается "В процессе", результаты автотестов заливаются, но не связываются с добавленным в тесплан тестом 195842. Самый верхние в списке автотесты искомые, а те с которыми результаты должны были связаться самые нижние 2 с крутящимися прелоадерами.
Как воспроизвести
Актуальное поведение
Ожидаемое поведение