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

Фотография

Передача параметров из TeamCity в тест(код)


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

#1 dimaChen

dimaChen

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Zimin Dima

Отправлено 16 декабря 2016 - 13:20

Всем привет, как можно передать параметр(аргумент) из TeamCity в тест (код) или конфиг файл, чтобы потом использовать его для определения на какой url запускать тест. У нас в TeamCity несколько проектов на разных портах, поэтому selenium должны соответственно запускаться на разных url. Кто нибудь сталкивался с такой проблемой? Может есть где почитать?

 

Selenium написаны на C#, build step выполняется посредством NUnit.


  • 0

#2 Lzk

Lzk

    Специалист

  • Members
  • PipPipPipPipPip
  • 504 сообщений
  • ФИО:Олег
  • Город:Мск

Отправлено 16 декабря 2016 - 13:25

создать конфиг файл(например JSON), в котором будет передаваться урл.ЯП читать этот JSON конфиг. При надобности в TEAMCITY подменять конфиг build step'om CMD для каждой конфигурации


  • 0

#3 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 16 декабря 2016 - 14:54

В Teamcity лучше всего передавать параметры в тест через переменные окружения.
То есть пытаетесь взять значение из переменных окружения, если их нет - дефолтное значение из properties-файла.
В итоге тест работает и на машине разработчика с дефолтными значениями и легко встраивается в CI-окружение, без каких-либо изменений в самом тесте.
  • 1

#4 dimaChen

dimaChen

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Zimin Dima

Отправлено 19 декабря 2016 - 09:41

А если buildagent на другой машине, как получить переменную окружения оттуда?


  • 0

#5 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 19 декабря 2016 - 10:09

Переменные окружения передаются билдагенту вместе с задачей.
Их задавать надо в конфигурации задачи.
  • 1

#6 dimaChen

dimaChen

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Zimin Dima

Отправлено 19 декабря 2016 - 11:38

Вот что сделал (если правильно понял): задал параметр (port89.png), в visual studio его могу получить через : 

System.Environment.GetEnvironmentVariable("Port89")

но приходит всегда null. Агента перегружал при установке параметра.

Прикрепленные файлы

  • Прикрепленный файл  port89.png   222,88К   5 Количество загрузок:

  • 0

#7 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 19 декабря 2016 - 11:58

можно попробовать параметры задавать в секции "Configuration parameters", например "PORT" "89"

 

а потом если например сборка Мавеном, то передавать туда через -Dport={PORT}


  • 0

#8 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 19 декабря 2016 - 12:00

а вообще всегда лучше полный апперкейс использовать когда дело имеешь с environment variables,

 

например PORT, вместо Port (может это и есть ошибка, остальное вроде верно указано на скриншоте)


  • 0

#9 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 19 декабря 2016 - 13:02

Вот что сделал (если правильно понял): задал параметр (port89.png), в visual studio его могу получить через : 

System.Environment.GetEnvironmentVariable("Port89")
но приходит всегда null. Агента перегружал при установке параметра.


Отлично, а теперь поколупайтесь в истории выполнения таски и посмотрите какие параметры с какими значениями передаются агенту.
К сожалению тимсити у меня сейчас в работе нет, точный маршрут по интерфейсу не подскажу.
  • 0

#10 dimaChen

dimaChen

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Zimin Dima

Отправлено 20 декабря 2016 - 11:09

 

 

Отлично, а теперь поколупайтесь в истории выполнения таски и посмотрите какие параметры с какими значениями передаются агенту.

В Teamcity в history отображается нужный параметр(который я установил), НО теперь тесты при запуске валятся с exception (exc.png). Происходит некий конфликт при объявлении переменной и chromedriver. Искал решение, нашел что нужно при объявлении драйвера использовать перегруженный конструктор с указание пути к chromedriver(на фото указан мой путь), но это тоже не помогло.

Прикрепленные файлы

  • Прикрепленный файл  exc.png   77,05К   3 Количество загрузок:

  • 0

#11 dimaChen

dimaChen

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Zimin Dima

Отправлено 20 декабря 2016 - 11:52

В принципе проблему решил: задал параметр "env.PORT" с значением например "60", код получает это значение через 

System.Environment.GetEnvironmentVariable("PORT")

и соответственно вызывает необходимый url. Все это замечательно отрабатывает на локальной машине где я поставил второго агента, НО сам Teamcity и основной агент у нас стоят на сервере отдельном. Так вот запуская через основного агента на серваке я получаю exception описанный постом выше.


  • 0

#12 Little_CJIOH

Little_CJIOH

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 515 сообщений
  • ФИО:Власкин Павел
  • Город:Санкт-Петербург


Отправлено 20 декабря 2016 - 12:08

Отлично, а теперь поколупайтесь в истории выполнения таски и посмотрите какие параметры с какими значениями передаются агенту.

В Teamcity в history отображается нужный параметр(который я установил), НО теперь тесты при запуске валятся с exception (exc.png). Происходит некий конфликт при объявлении переменной и chromedriver. Искал решение, нашел что нужно при объявлении драйвера использовать перегруженный конструктор с указание пути к chromedriver(на фото указан мой путь), но это тоже не помогло.

Внимательно прочитайте какой файл он не находит. У вас точно файл chromedriver.exe лежит в папке chromedriver.exe? или кто-то вместо пути до папки содержащей файл указал полное имя файла?
  • 0

#13 dimaChen

dimaChen

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

  • Members
  • Pip
  • 20 сообщений
  • ФИО:Zimin Dima

Отправлено 21 декабря 2016 - 13:24

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


  • 0


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

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