Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

подскажите как организовать запуск одних и тех же тестов и на prod и на dev окружение


(olka) #1

Собственно сабж. В проекте использую testng+maven. И так же есть такой нюанс, что в негативных тестах, при обработке ошибок один текст ошибки будет на dev, при этом в этом же тесте на prod будет другой текст. Заранее спасибо!


(Максим Малунов) #2

Не очень понятно в чем проблема .

  1. Дописать блок в котором если это dev то …do something

Это вообще webdriver ? Если да
2) если по какой-то причине нельзя что за окружение то можно в одном локаторе прописать типа так .

.//*[@id='ember1249']/a | .//*[@id='ember1250']/a  

Так как вам надо с разными текстами то только XPath,CSS уже не умеет работать с текстовыми нодами .


(olka) #3

Нет это не вебдрайвер. Я использую rest-assured для тестирования API и вот мне нужно проверить вот такое:
Response data = given().contentType(“application/json”)
.body(JSON)
.expect()
.statusCode(422)
.when().post(URL);
assertEquals(data.body().asString(), ERROR_MESSAGE);
И вот получается в зависимости от URL будет разный ERROR_MESSAGE


(Sergey Korol) #4

В Jenkins задаете параметр, к примеру, ENV_URL.
В коде вычитываете его:

String url = System.getenv("ENV_URL") != null ? System.getenv("ENV_URL") : defaultURL;

Для организации быстрого переключения без вмешательства в код, создаете 2 maven run configs для продакшен и дев с кастомными переменными окружения:

В лог уже, как захотите, так вставляете месседж в зависимости от url. Можно вынести в enum доступные варианты, а потом свитчить и конкатенировать нужное сообщение.


(Jane Tymoschuk) #5

Ну строить фреймморк на одних ифах - это гиблое дело
Мой совет сделать несколько maven профайлов для запуска. Каждому профайлу задать свой ресурс со значениями текстовых переменных. Все эти переменные вычитывать как проперти файл при инициализации. Я могу закинуть несколько ключевых фраз, по которым лучше разобраться самостоятельно.
Нужно смотреть либо в сторону testResources, либо в сторону, например, profile->properties и задавать просто путь к фалу для каждого профайла свой.
а в коде при инициализации уже делать что-нибудь из серии

InputStream input = new FileInputStream(System.getProperty("text.resource", defaultPath));
InputStreamReader reader = new InputStreamReader(input);
properties.load(new InputStreamReader(input, reader.getEncoding()));

а потом уже читать из проперти файла как properties.getProperty(“some.text.template”);`

при этом файлы будут выглядеть идентично, иметь одинаковый набор параметров, но разные их значения.
Если нужна будет помощь в реализации, всегда готова помочь :wink:

Нужно понимать, что всегда есть альтернативы в виде xml, json и тд и тп


(Jane Tymoschuk) #6

ну если таких пропертей 3 - это ок, а если таких строк 50?


(Sergey Korol) #7

Каких пропертей - окружений? Да ну, бросьте. Мы ведь говорим не о VM-ках, где будут запускаться тесты, а о серверах, где развернуто наше приложение. В большинстве случаях у вас наверняка будет подразделение на какие-нибудь Dev / QA / UX / Prod. Так что возможных вариантов не так уж и много. Вариант с maven профайлами хорош, если URL не придется задавать динамически. К примеру, дев захотел натравить автотесты на свое локальное окружение. Задав кастомный URL через Jenkins, ему ничего не нужно будет менять в коде.


(Jane Tymoschuk) #8

ну так я же просто предлагаю альтернативы;)
Я решала эту задачу как раз через профайлы


(Sergey Korol) #9

А я и не говорю, что ваш вариант плох. :blush: Мы предоставили идеи, а автор пусть сама уж решает, что будет лучше для ее случая.