Собственно сабж. В проекте использую testng+maven. И так же есть такой нюанс, что в негативных тестах, при обработке ошибок один текст ошибки будет на dev, при этом в этом же тесте на prod будет другой текст. Заранее спасибо!
Не очень понятно в чем проблема .
- Дописать блок в котором если это dev то …do something
Это вообще webdriver ? Если да
2) если по какой-то причине нельзя что за окружение то можно в одном локаторе прописать типа так .
.//*[@id='ember1249']/a | .//*[@id='ember1250']/a
Так как вам надо с разными текстами то только XPath,CSS уже не умеет работать с текстовыми нодами .
Нет это не вебдрайвер. Я использую 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
В Jenkins задаете параметр, к примеру, ENV_URL
.
В коде вычитываете его:
String url = System.getenv("ENV_URL") != null ? System.getenv("ENV_URL") : defaultURL;
Для организации быстрого переключения без вмешательства в код, создаете 2 maven run configs для продакшен и дев с кастомными переменными окружения:
В лог уже, как захотите, так вставляете месседж в зависимости от url. Можно вынести в enum
доступные варианты, а потом свитчить и конкатенировать нужное сообщение.
Ну строить фреймморк на одних ифах - это гиблое дело
Мой совет сделать несколько 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”);`
при этом файлы будут выглядеть идентично, иметь одинаковый набор параметров, но разные их значения.
Если нужна будет помощь в реализации, всегда готова помочь
Нужно понимать, что всегда есть альтернативы в виде xml, json и тд и тп
ну если таких пропертей 3 - это ок, а если таких строк 50?
Каких пропертей - окружений? Да ну, бросьте. Мы ведь говорим не о VM-ках, где будут запускаться тесты, а о серверах, где развернуто наше приложение. В большинстве случаях у вас наверняка будет подразделение на какие-нибудь Dev / QA / UX / Prod. Так что возможных вариантов не так уж и много. Вариант с maven профайлами хорош, если URL не придется задавать динамически. К примеру, дев захотел натравить автотесты на свое локальное окружение. Задав кастомный URL через Jenkins, ему ничего не нужно будет менять в коде.
ну так я же просто предлагаю альтернативы;)
Я решала эту задачу как раз через профайлы
А я и не говорю, что ваш вариант плох. Мы предоставили идеи, а автор пусть сама уж решает, что будет лучше для ее случая.
Здравствуйте,
Вы не могли бы обновить картинку (или текстом написать) вот к этому вашему комментарию " Для организации быстрого переключения без вмешательства в код, создаете 2 maven run configs для продакшен и дев с кастомными переменными окружения:", пожалуйста? Очень нужно знать, что на ней.
Спасибо
Ох, ну вы нашли, о чем спросить, спустя 6 лет. Подозреваю, что там была картинка с разными maven конфигурациями в IDE.
Вы лучше опишите, что вам конкретно нужно? Задать переменные окружения в среде разработки? Или добавить choice parameter в Jenkins?
П.C. Картинками я не управляю. Думаю, что в столь старых постах они все безвозвратно потерялись после ряда апдейтов платформы. @polusok может точно знать.
Я решила, что не плохо бы вначале поискать на форуме уже имеющиеся ответы прежде, чем клепать новый вопрос.
Конкретно в вашем предложении мне было не совсем понятно, что вы подразумевали под “переключением без вмешательства в код”.
Сейчас по вашему ответу, вроде бы, понятно, что нужно задать переменные окружения в IDEA (по крайней мере, у меня она) и добавить choice parameter в Jenkins.
Вариант с maven профайлами хорош, если URL не придется задавать динамически. К примеру, дев захотел натравить автотесты на свое локальное окружение. Задав кастомный URL через Jenkins, ему ничего не нужно будет менять в коде.
Решение этой проблемы я нашла в видосике в этой теме: Параметризация теста из Jenkins в конфигурационный файл TestNG - #24 от пользователя Necrosium
Спасибо вам большое за ответ