В цикле теста импортируется ресурс с кейвордами через ключевое слово Import Resource (BuiltIn).
На последнем шаге данной итерации требуется удалять импортированный ресурс, так как в следующей итерации цикла импортируется новый ресурс и так далее.
Суть проблемы в том, что импортированные ресурсы все остаются в test suite scope, а, поскольку, кейворды идентичные, то берутся они из первого импортированного ресурса, что для условий теста недопустимо.
Может быть кто-нибудь подскажет, как можно было бы решить такую проблему?
Что-от похожее на Delete Resource отсутствует в библиотеке.
интересно у Вас построены тесты… А не приведёте ли пример задачи, которая решается так? Возможно, стоит сделать редизайн тестов вместо поиска таких финтов
У меня 100+ игр. На данный момент для каждой игры существует свой сьют тестов, куда импортируется все, что необходимо, в том числе ресурсный файл с кейвордами для данной игры.
Есть реализация общих кейвордов с возможностью их имплементации в конкретной игре.
например:
Check Game State Impl
Call Default Or Own Check Game State Check Game State Default
Поступила задача написать один тест, который будет в цикле запускать все игры и прогонять тест кейс (на проверку, допустим, какой-нибудь фичи) для каждой игры.
Соответственно каждый раз я получаю путь к ресурсу с кейвордами для запущенной игры и хочу, чтобы в этот момент использовался только он. При запуске следующей игры я хочу иметь активным соответствующий ей robot файл.
Есть еще кейворд Set Library Search Order. В него вроде можно передавать имена ресурсов.
Например, есть 2 ресурса, в которых находится киворд “Cool Keyword”:
1_resource.robot
2_resource.robot
Соответственно, тест кейс с циклом может выглядеть так:
*** Test Cases ***
Cool Test Case
:FOR ${i} IN 1 2
\ Import Resource ${CURDIR}/${i}_resouce.robot
\ Run Keyword ${i}_resource.Cool Keyword
\ Run Keyword ${i}_resource.Another Cool Keyword
Т.е. каждый вызов киворда в цикле будет начинаться с Run Keyword ${resource_name}.your_keyword, где переменная ${resource_name} должна принимать новое значение в каждой итерации цикла.
Рабочим вариантом тогда будет создать переменную @{resources} в секции ***Variables ***, и цикл соответственно будет выглядеть так:
:FOR ${resource} IN @{resources}
\ Import Resource ${resource}
\ Run Keyword ${resource}.Cool Keyword
Что-то не понятно, зачем запускать тесты в цикле )
Разбейте их по папкам, а потом натравите RF на эти папки.
Можно использовать файл init.robot в котором все общие ресурсы пропишете.