Что лучше использовать для хранения параметров теста (TestNG)?

хочу хранить параметры для теста отдельно от теста. Рассматриваю два варианта: xml и Excel. Пока склоняюсь больше к xml - так как, мне кажется, более гибко можно сделать файл параметров и более гибко, под себя, написать парсер, также дополнительный плюс - xml более универсальный формат - можно открыть на любом компьютере. Плюсом Excel является большое количество уже готовых примеров парсеров - можно легко накопипастить парсер за полчаса, для нетехнического пользователя легче пользоваться, сложнее “сломать”. Но вот, например, у меня на Маке Numbers не захотел открывать экселевский файл - поэтому мне сложнее его редактировать. Хотелось бы знать мнение сообщества.

И те кто использует xml - можете скинуть примеры файла параметров? не хотелось бы изобретать велосипед в структуре такого файла

Я бы использовал csv в большинстве случаев

1 лайк

а какая аргументация?

Простой текстовый файл, ничего лишнего. По сути - txt с delimeters. Можно открывать хоть Notepad, хоть Excel. Откроется везде, гарантированно. В куче фреймворков он поддерживается “из коробки”, практически стандарт в DDT.

2 лайка

это для каждого теста надо свой csv, правильно я понимаю?

1 набор данный = Отдельный файл. Если разные тесты используют тот же набор данных, можно юзать тот же файл.

можно еще расмотреть такой вариант - .properties - Wikipedia

посмотрите в сторону json, более читабельный чем xml, поддержка есть везде

2 лайка

а LibreOffice для мака не кошерно ? должен открывать MS Office.

Если файл будет храниться в CVS (git, svn), то однозначно не excel.
Писать свой парсер не надо, можно использовать например jackson.
Конфигурацию тестов в общем случае (не dataprovider) лучше хранить в .properties (как советует Levotsky_Vadim).
Если нужен dataprovider, то советую использовать json (более легко читаем чем xml)
Как реализовать можно посмотреть здесь.
Pojo классы можно генерить тут

6 лайков

мне только одному кажется что табличные форматы типа MS и Опен оффиса удобны своей структурой и наличием общепринятого доступного редактора ?
авторить данные в JSON YAML или XML весьма трудоемко. сохранять конфиги это да. а всякие keyword framework растут из / привязаны к экселя/ю…

CVS это по-моему немного hard core - попробуйте колонки поменять местами или удалить

Немножко не в тему:
использую .properties для хранения названий кнопок, заголовков и пр. Но вот проблема: например, в немецком языке много умляутов (символы с точками над буковками) и их надо в файлах .properties заменять на юникоды. Например,
вместо ä надо \u00E4
Понимаю, что можно написать шелл файлик “автозаменялку”. Но, вдруг, это уже сделано?
Если да, то поделитесь ссылочкой. :wink:

Никаких проблем с CSV, открываете в Excel и работаете с ним

1 лайк

Можно обойтись без всяких автозаменялок:
Имеем файл test.properties с содержимым
string=äääääääääääääää

Считываем проперти:

 Properties properties = new Properties();
 properties.load(Files.newBufferedReader(Paths.get("test.properties")));

Все считывается корректно:

2 лайка

Только нужно .properties в UTF-8 писать.

Json.

Создаете файл test.json. Заполняете его данными. После этого идете в проект, добавляете в зависимости gson, ставите плагин Json2Pojo для Intellij Idea. Генерите с помощью него Pojo (в пакете где надо тыкаете ПКМ -> New -> Generate POJOs from Json). Дальше юзаете сгенеренные классы с get/set методами в своих тестах. Чтобы поюзать несколько однообразных jsonов (подходящих к сгенерным Pojo) достаточно использовать gson.fromJson(BufferedReader, PojoClass).

2 лайка

недавно обновил sergueik/testng-dataprovider и
sergueik/junit-dataproviders