Перейти к содержимому

Фотография

Установка System Property для тестов в build.gradle


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 Dmitry2017

Dmitry2017

    Новый участник

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Дмитрий Витальевич


Отправлено 12 октября 2019 - 14:49

Коллеги, здравствуйте!

Я впервые столкнулся с задачей работы с JSON-конфиг. файлом.

Есть такой конфиг в формате JSON (вид привожу сокращенный):

{
  "conturs": {
    "test": [
      {
        "baseurl": "http://bank.devel.ifr/",
        "AU": {
          "login": "Anisimov",
          "password": "123456"
        },
        "OTUR": {
          "login": "interfax_ot_ur",
          "password": "123456"
        }
      }
    ]
  }
} 

Я научился читать в build.gradle параметры из этого JSON:

task test1(type: Test) {
    useTestNG(){
        suites 'src/test/resources/testng-message-AU.xml'
    }
    if (project.hasProperty('role')) {
        systemProperty 'role', "${role}" 
        if("AU".equals(System.getProperty("role"))) {
            doLast {
                def jsonFile = file('config/config.json')
                def parsedJson = new groovy.json.JsonSlurper().parseText(jsonFile.text)
                String login = parsedJson.conturs.test.AU.login
                String password = parsedJson.conturs.test.AU.password
                println login
                println password
            }
        }
    }
} 

Т.е. из командной строки запуска выбирается роль (${role}). В данном примере это роль "AU".

Далее считываю логин и пароль из конфига для данной роли.

Но не получается передать найденный логопас через System Property в фикструру тестов.

Например, пробовал дописать в данную task функцию 

System.properties.'login'=login

Однако System.getProperty("login") в фикстуре неизменно получает null.

Коллеги, сталкивались ли вы с подобной задачей? Подскажите, пожалуйста, - как решали?

Или может быть вообще какой-то другой путь есть для работы с JSON-конфигом.

 


  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 13 октября 2019 - 09:04

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


run {   
    systemProperties['login.name'] = login
    systemProperties['login.password'] = password
}

plugins {
    id 'application'
}

  • 0

#3 Dmitry2017

Dmitry2017

    Новый участник

  • Members
  • Pip
  • 14 сообщений
  • ФИО:Дмитрий Витальевич


Отправлено 15 октября 2019 - 14:08

 

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


run {   
    systemProperties['login.name'] = login
    systemProperties['login.password'] = password
}

plugins {
    id 'application'
}

Большое спасибо! А не подскажите, как "совместить" этот run с моим, приведенным выше,  task test1(type: Test)  ?

Дело в том, что я запускаю именно task.

Дописывание run в конец task не помогает:

task test1(type: Test) {
    useTestNG() {
        suites 'src/test/resources/testng-message-AU.xml'
    }
    if (project.hasProperty('role')){
        systemProperty 'role', "${role}"
    }
    if("AU".equals(System.getProperty("role"))) {
        doLast {
            def jsonFile = file('config/config.json')
            def parsedJson = new groovy.json.JsonSlurper().parseText(jsonFile.text)
            login = parsedJson.test.AU.login
            password = parsedJson.test.AU.password
        }
    }
    run
}

  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных