Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Использование одних и тех же keywords при параллельных тестах

robot-framework
Теги: #<Tag:0x00007f7b64c299a8>

(Necrosium) #1

Привет всем.
В компании планируется в дальнейшем запускать тесты параллельно. В связи с этим возникает вопрос.

Чтобы не плодить множество схожих кейвордов, я создавал глобальный кейворд:

click on submit btn
[Arguments] ${submit_btn}
Click Element ${submit_btn}

в который передавал аргументом локатор нужной мне кнопки из разных тестов/страниц сайта/модулей/etc.

На практике параллельный запуск еще не пробовали, но может кто подскажет, не будет ли конфликтов, когда во время параллельных тестов этот кейворд будет использоваться сразу из множества различных тестов?
Не прийдется ли переписывать и делать для каждого теста отдельный кейворд с нажатием на конкретную кнопку для этого теста?


(Dmitriy Zverev) #2

Здравствуйте.
Советую попробовать, потому как параллельность будет зависеть от того, как вы разделяете сессии браузера, нет ли у вас множественного изменения данных, тестируете ли вы от одного пользователя.

Что касается кода, то pabot запускает тесты в несколько процессов, поэтому global lock на тестах или переопределение переменных не грозит.


(Necrosium) #3

Ок, вот такой пример, если я буду дергать из разных тестов функцию на создание уникального мыла
Create unique email
${unix_date}= Get Time format=epoch
${unique_email}= Set Variable qa+${unix_date}@test.com
Set Global Variable ${unique_email}

При параллельных тестах, к примеру, ее вызовет тест регистрации и тест покупки товара для незарегистрированного юзера.
Соответственно в первом случае мы получим какой-то:
qa+123578345@test.com
во втором:
qa+346729888@test.com
Я вот хочу понять, для каждого теста, который вызывает эту функцию Create unique email - будет существовать независимая переменная мыла или второй вызов функции перезатрет значение первой?

p.s. мне кажется если делать Set Global то перезатрет, а если делать Set Suite (а регистраци и покупка - это разные сьюты), то не перезатрет
(все дело в том, что эта переменная нужна не просто для добавления в поле. Она используется спустя еще некоторое время для проверок, поэтому мне важно, чтобы она сохраняла значение)

p.s.s. просто работы сейчас валом и нет возможности уделить время прикручиванию распараллеливания (чтобы проверить все самому) вот и пытаюсь пока собрать хоть какие-то теоретические знания на этот счет :slight_smile:


(Dmitriy Zverev) #4

Я бы советовал сделать этот код кейвордом, который не выставляет глобальную переменную, а возвращает ${unique_email} в вызывающий его тест


(Necrosium) #5

спасибо