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

dataprovider
testng
Теги: #<Tag:0x00007fedbb6fdde8> #<Tag:0x00007fedbb6fdca8>

(Oleksandr Molodetskyi) #1

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


(Oleksandr Molodetskyi) #2

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


(Евгений Салмин) #3

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


(Oleksandr Molodetskyi) #4

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


(Евгений Салмин) #5

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


(Oleksandr Molodetskyi) #6

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


(Евгений Салмин) #7

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


(Levotsky Vadim) #8

можно еще расмотреть такой вариант - https://en.wikipedia.org/wiki/.properties


(Roy Obenon) #9

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


(Сергей Кузьмин) #10

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


(Александр Ефимов) #11

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


(Сергей Кузьмин) #12

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

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


(Sergey Rybakin) #13

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


(Александр Ефимов) #14

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


(Александр Ефимов) #15

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

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

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

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


(Баранов Иван) #16

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


(Kyrylo Havrylenko) #17

Json.

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


(Сергей Кузьмин) #18

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