Robot Framework: условный импорт ресурса - PullRequest
0 голосов
/ 19 ноября 2018

Можно ли сделать условный импорт файла ресурсов в каркасе робота?В зависимости от среды тестирования я хочу импортировать файл ресурсов с разными переменными.Переменная может быть считана из CLI робота (например, robot --variable VAR: production myTestSuite)

Иллюстрирующий пример:

*** Settings***
Resource    variables_url_environment_a.robot
Resource    variables_url_environment_b.robot

Run keyword if     '${VAR}'=='production'    Import resource    variables_url_environment_b.robot

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Вы можете использовать переменную в имени файла импорта. Установите значение переменной из файла pom.xml, если вы используете maven.

Пример примерно так: $ {PLATFORM} - это переменная:

*Settings*
Resource    ../platforms/settings_${PLATFORM}.tsv                       
Resource    ../platforms/settings_default.tsv   
*Variables*                         
${PLATFORM} ${ENV_PLATFORM} 

Ниже приведен фрагмент из файла POM.xml

.
....
<env.platform>Platform1.</env.platform>
....
<configuration>
    <variables>
        <param>ENV_PLATFORM:${env.platform}</param>
    </variables>
</configuration>
....

Кроме того, таким образом вы можете передать значение платформы от Дженкинса (если используется) используя -Denv.platform = Platform_5

0 голосов
/ 22 ноября 2018

Я не думаю, что условный импорт возможен в Robot Framework так, как вам нравится.Однако вместо импорта файла envorimnent в качестве resoucres вы можете передать их в свой тест как - variablefile

Как я это сделаю?

variable_url_environment_a.py

msg='env a'

variable_url_environment_b.py

msg='env b'

Test.robot

*** Settings ***
*** Variables ***
*** Test Cases ***
print message to console
    print msg
*** Keywords ***
print msg
    log to console  ${msg}

Теперь просто запустите ваш набор тестов в соответствии с необходимой вам средой, создав простой скрипт на python.

Python_run_script

import subprocess
var='Production'
command_a='pybot -V variables_url_environment_a.py Test.robot'
command_b='pybot -V variables_url_environment_a.py Test.robot'
if var='Production': 
    procId = subprocess.Popen(command_a,stdout = subprocess.PIPE)
else:
    procId = subprocess.Popen(command_b,stdout = subprocess.PIPE)

Для получения дополнительной информации о том, как использовать --variablefile, вы также можете обратиться к URL-адресу ниже

https://automationlab0000.wordpress.com/2018/11/20/how-to-pass-python-variable-file-in-robotframework/

0 голосов
/ 19 ноября 2018

Вы можете использовать файл аргументов, который будет иметь разные переменные среды, вы можете использовать что-то вроде

QA.args

    --variable Enviroment:http://sample.url/QA:1111
    --variable USER:John
    --variable PASSWORD:John

Тогда в вашем Robot.test

*** Test Cases ***
Run Argument File
     Go To  ${Enviroment}
     Login With User   ${USER}  ${PASSWORD}

ПРИМЕЧАНИЕ : Это всего лишь пример использования файла аргументов. Вход с пользователем не является ключевым словом

А затем выполните команду

robot --argumentfile "QA.args" tests

Вы также можете перезаписать переменные в командной строке.

robot --argumentfile "QA.args" --variable Enviroment:http://sample.url/Staging:1111 tests
...