Как передать несколько аргументов в тестовый пример в среде автоматизации тестирования CumulusCI?

Постановка задачи:

Не удалось передать несколько значений переменных в мой тестовый пример с помощью команды CumulusCI:

`cci task run robot...
  1. Я ссылаюсь на этот раздел для создания моей команды: https://cumulusci.readthedocs.io/en/latest/tasks.html#id49

  2. Если мне нужно передать только одну переменную так же, как указано выше, скажем, например. просто LocalOrRemote, тогда код работает отлично, поэтому кажется, что это должно что-то делать с тем, как я передаю несколько переменных.

  3. Мой стек технологий автоматизации тестирования — Robot Framework, CumulusCI, Selenium.

Образец кода:

*** Settings ***
Resource  C:/Dev/myproject/robotframework/EnvironmentSetupFile.robot
Suite Setup  Run Keywords  Suite Setup KW1  AND  Suite Setup OS And Browser  ${LocalOrRemote}  ${Browser}


*** Test Cases ***
Verify whether I am able to set environment and browser
    [Tags]  LocalEdge
    [Documentation]  This test should run on the local edge browser
    Keyword X
    Keyword Y


*** Keywords ***
Suite Setup KW1
    do something
Suite Setup OS And Browser
    [Arguments]  ${LocalOrRemote}  ${Browser}
    Log Many  ${LocalOrRemote}  ${Browser}
    run keyword if  '${LocalOrRemote}'=='Local'  Setup Local Browser  ${Browser}  
    ...  ELSE IF  '${LocalOrRemote}'=='Remote'  Setup Remote Browser  ${Browser}
    ...  ELSE  FAIL  "Incorrect environment value passed! Please refer the instructions in README for running the test suite"

Команда, которую я использую для вызова моего теста:

cci task run robot -o suites mypath/MyTestFile.robot -o include LocalEdge -o vars LocalOrRemote:Local,Browser:edge

Проблема, с которой я столкнулся:

Значение ${Browser} не принимается как край, а по умолчанию равно хрому, что означает, что команда не может передать желаемое значение в TC.

KEYWORD BuiltIn . Log Many ${LocalOrRemote}, ${Browser}
Documentation:  
Logs the given messages as separate entries using the INFO level.
Start / End / Elapsed:  20190522 16:36:53.877 / 20190522 16:36:53.878 / 00:00:00.001
16:36:53.877    INFO    Local   
16:36:53.877    INFO    chrome

Я добавил этот вопрос неделю назад на биржу стека Salesforce связь, однако ответа на него пока нет; отсюда и надежда, что размещение его здесь привлечет больше внимания.

vish4444 27.05.2019 12:47

Я не могу воспроизвести проблему. Когда я запускаю ваш точный тест и предоставляю фиктивные реализации отсутствующих ключевых слов, тест регистрирует «край» как браузер, когда я использую точную командную строку, которую вы указали в своем вопросе. Возможно, это ваше ключевое слово Setup local kw1, которое меняет значение ${browser}. Другими словами, способ передачи нескольких переменных — это именно то, как вы это делаете.

Bryan Oakley 28.05.2019 00:15

Чтобы исключить ошибку в cci, я рекомендую вам начать с чрезвычайно простого теста, который ничего не делает, кроме регистрации значений переменных. Я предполагаю, что они покажут значения, установленные в командной строке. Затем вы можете начать добавлять код обратно, чтобы увидеть, когда переменная изменится. Может быть, это файл ресурсов, может быть, это одно из других ваших ключевых слов.

Bryan Oakley 28.05.2019 00:20
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Blibli Automation Journey - Как захватить сетевой трафик с помощью утилиты HAR в Selenium 4
Если вы являетесь веб-разработчиком или тестировщиком, вы можете быть знакомы с Selenium, популярным инструментом для автоматизации работы...
0
3
228
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Большое спасибо @Bryan за направление. Это был тот момент, когда вы испытываете такой благоговейный трепет перед своим собственным творением и забываете попробовать базовую отладку в своей среде.

В любом случае, проблема здесь заключалась в размещении ресурсов, как вы правильно указали. Обратите внимание на фрагменты кода до и после ниже. Проблема (на данный момент я не могу комментировать, что это проблема или недостаток) связана с размещением ресурса Salesforce.robot. Чтобы команда Cci передала правильное значение 2-й переменной, мне пришлось поместить этот ресурс в сам тестовый пример. Команда Cci не передала правильное значение второй переменной, когда я загрузил этот ресурс через файл среды; странный.

*** Settings ***
Documentation  ###My setup before: 
Resource  C:/Dev/myproject/robotframework/EnvironmentSetupFile.robot
Suite Setup  Run Keywords  Suite Setup KW1  AND  Suite Setup OS And Browser  ${LocalOrRemote}  ${Browser}
Documentation  ###My setup after: 
Resource  C:/Dev/myproject/robotframework/EnvironmentSetupFile.robot
Resource  cumulusci/robotframework/Salesforce.robot  #had to place this resource here
Suite Setup  Run Keywords  Suite Setup KW1  AND  Suite Setup OS And Browser  ${LocalOrRemote}  ${Browser}

*** Test Cases ***
Verify whether I am able to set environment and browser
    [Tags]  LocalEdge
    [Documentation]  This test should run on the local edge browser
    Log  "TC passed"

Моя установка до:

C:/Dev/myproject/robotframework/EnvironmentSetupFile.robot

*** Keywords ***
Suite Setup KW1
    Import Resource  cumulusci/robotframework/Salesforce.robot  #the resource that was causing the issue
    Import Resource  C:/Dev/myproject/robotframework/BrowserSetupKeywords.robot
    import resource  C:/Dev/myproject/robotframework/ValidationKeywords.robot
    Import Library  cumulusci.robotframework.CumulusCI  ${ORG}
    import library  SeleniumLibrary  timeout=7 seconds  implicit_wait=5 seconds
    import library  OperatingSystem
    import library  BuiltIn

C:/Dev/myproject/robotframework/BrowserSetupKeywords.robot

*** Keywords ***
Suite Setup OS And Browser
    [Arguments]  ${LocalOrRemote}  ${Browser}
    Log Many  ${LocalOrRemote}  ${Browser}  #used to default Browser value passed to chrome

`

Моя установка после:

C:/Dev/myproject/robotframework/EnvironmentSetupFile.robot

*** Keywords ***
Suite Setup KW1
    #Import Resource  cumulusci/robotframework/Salesforce.robot  # had to comment this resource here and place it before the Suite Setup
    Import Resource  C:/Dev/myproject/robotframework/BrowserSetupKeywords.robot
    import resource  C:/Dev/myproject/robotframework/ValidationKeywords.robot
    Import Library  cumulusci.robotframework.CumulusCI  ${ORG}
    import library  SeleniumLibrary  timeout=7 seconds  implicit_wait=5 seconds
    import library  OperatingSystem
    import library  BuiltIn

C:/Dev/myproject/robotframework/BrowserSetupKeywords.robot

*** Keywords ***
Suite Setup OS And Browser
    [Arguments]  ${LocalOrRemote}  ${Browser}
    Log Many  ${LocalOrRemote}  ${Browser}  #now returns the correct Browser value
Ответ принят как подходящий

How to pass multiple arguments to a test case in CumulusCI test automation framework?

То, как вы это делаете, правильно: -o vars var1:value1,var2:value2

Вот очень простой пример:

*** Test cases ***
Example
    Should be equal  ${LocalOrRemote}  Local
    Should be equal  ${Browser}        edge

Сохраните это в файл, а затем запустите его с задачей робота следующим образом:

cci task run robot -o vars LocalOrRemote:Local,Browser:edge -o suites example.robot 

Вы увидите, что переменные инициализированы правильно. Если открывается не тот браузер, возможно, одна из ваших библиотек меняет значение переменной ${Browser} без вашего ведома.

Другие вопросы по теме