Я разрабатываю структуру автоматизации с использованием Selenium Webdriver по шаблону PageObject, где есть 2 слоя:
- Классы тестов (спецификация тестов)
- Классы PageObject (тестовая реализация)
Мои тестовые классы содержат методы аннотации TestNG (@Test
, @BeforeTest
, @AfterTest
и т. д.), где я создаю объекты классов PageObject и вызываю методы в этих классах, которые фактически будут взаимодействовать с AUT.
То, как я передаю данные в тесты, включает:
- Все локаторы (локаторы css/xpath/class/id) элементов в приложении.
- Все необходимые тестовые данные
в файле свойств (например, testDataSet1.properties). Я создаю HashMap<String, String>
файла свойств и передаю его в качестве параметра всем объектам страницы, которые будут считывать данные из хэш-карты и использовать их в сценарии. Я вообще не передаю тестовые данные из тестовых классов.
В чем моя проблема, я не уверен, уместно ли читать тестовые данные в PageObjects. У меня такое ощущение, что этот подход очень негибкий, потому что я привязываю тестовые данные к PageObjects вместо того, чтобы привязывать их к тестам. Поэтому, когда мне нужно выполнить тесты на основе данных/запустить пакет автоматизации в нескольких итерациях, это не сработает. Потому что в настоящее время, если мне нужно использовать разные данные каждый раз, когда мне нужно вручную перейти и изменить ключ, указанный в хэш-карте, который получит другое значение из файла свойств.
Какие-либо предложения?