Изменение пользовательских ключевых слов с жестко заданными параметрами в среде роботов. - PullRequest
0 голосов
/ 21 апреля 2020

Сценарий:

У меня есть определенные ключевые слова, в которых используются жестко закодированные значения, например

PUT Method
    [Arguments]     ${token}      ${PUT_ACTION_URI}     ${req_data}     ${status_code}   
    ${second}     fetch from right   ${PUT_ACTION_URI}     /v2/ip/
    ${PUT_ACTION_URI}     set variable if   '${admin_flag}'=='True'      /v2/ip/admin/${second}      ${PUT_ACTION_URI}
    [Return]    ${responsejsondata}

Здесь / v2 / ip жестко запрограммирован

Теперь это значение может быть любым, например / v2 / ip до / v3 / ip или / v3.1 / ip

Чтобы справиться с этим, я могу подумать

  1. Создать отдельный KW для / v3 / ip или /v3.1/ip

  2. Создайте отдельную ветвь для каждого v2 / V3 / V3.1 и замените V2 / V3 соответственно.

  3. Создайте глобальную переменную и замените / v2 / ip этим глобальным переменная

i Имеется около 400 кВт, где / v2 / ip используется по крайней мере 3 раза в каждом файле, после любого из трех методов потребуется некоторая ручная работа.

если здесь можно использовать декораторы?

, где они могут просто изменить / v2 / ip в базовом KW во время выполнения на основе установленного флага.

Любой другой подход также приветствуется.

Ответы [ 2 ]

1 голос
/ 21 апреля 2020

Существует несколько способов достижения этого в среде роботов.

1. Использование глобальной переменной и присвоение переменной во время выполнения. (Этот подход хорош, если у вас меньше переменных)

${VERSION} v2

и укажите значение во время выполнения с помощью робота -v ВЕРСИЯ: v3 suite.robot

PUT Method
[Arguments]     ${token}      ${PUT_ACTION_URI}     ${req_data}     ${status_code}   
${second}     fetch from right   ${PUT_ACTION_URI}     /${VERSION}/ip/
${PUT_ACTION_URI}     set variable if   '${admin_flag}'=='True'      /${VERSION}/ip/admin/${second}      ${PUT_ACTION_URI}
[Return]    ${responsejsondata}


2. Использование скалярного файлового подхода (этот подход хорош, если у вас есть больше переменных)

  • Создание внешнего файла, скажем: scalars.py

scalars.py VERSION=2.1 VARIABLE_1="ANY VALUE IN THIS FORMAT" ... ... VARIABLE_N="ANY VALUE IN THIS FORMAT" * Импорт этот файл в робот в разделе Variables.

  • Область действия этих переменных также глобальна

CODE

*** Настройки ***

Библиотека You_Other_Custom_libraries

Переменные Scalars.py

*** Контрольные примеры ***

PUT Method
[Arguments]     ${token}      ${PUT_ACTION_URI}     ${req_data}     ${status_code}   
${second}     fetch from right   ${PUT_ACTION_URI}     /${VERSION}/ip/
${PUT_ACTION_URI}     set variable if   '${admin_flag}'=='True'      /${VERSION}/ip/admin/${second}      ${PUT_ACTION_URI}
[Return]    ${responsejsondata}


На основании редактирования вашего вопроса (другой подход)

3. используя команду sed для замены строки

Напишите сценарий:

  • Создайте копию файлов тестового примера (чтобы сохранить исходные файлы в безопасности)
  • Замените содержимое с помощью sed command
    • ex. sed 's/<str_to_replace>/<str_with_replace>/g' *.robot
  • Выполнение контрольных примеров
  • Удаление скопированных файлов (для экономии места)

Повторите вышеуказанные шаги для повторного запуска контрольных примеров

1 голос
/ 21 апреля 2020

Создать глобальную переменную со значением по умолчанию и использовать ее в коде (например, test_data.robot)

Пример:

${VERSION}    v2

Код:

PUT Method
    [Arguments]     ${token}      ${PUT_ACTION_URI}     ${req_data}     ${status_code}   
    ${second}     fetch from right   ${PUT_ACTION_URI}     /${VERSION}/ip/
    ${PUT_ACTION_URI}     set variable if   '${admin_flag}'=='True'      /${VERSION}/ip/admin/${second}      ${PUT_ACTION_URI}
    [Return]    ${responsejsondata}

Теперь пользователи могут изменять $ {VERSION} во время выполнения также

robot -v VERSION:v3 suite.robot
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...