Я работаю с XML-файлом TestNG, подобным скопированному внизу этого поста. Чтобы параметризовать тесты браузером, я разбил каждый класс на отдельный узел.
В рамках нашей интеграции с нашим программным обеспечением для отчетов мы храним часть данных, предоставляемых каждым методом тестирования, в массиве списков, который обрабатывается объектом ITestContext. В методе @afterSuite эти объекты загружают эту информацию в наше программное обеспечение для создания отчетов
В других пакетах, где все классы существуют в одном узле, это работает нормально. Однако в этом наборе мы получаем данные только для самого последнего узла. Кажется, он перезаписывает предыдущие три, создавая новый экземпляр ITestContext с каждым. К сожалению, я не могу объединить этот пакет в отдельную, потому что мы потеряем возможность параметризовать тесты.
Мне нужно знать, существует ли приемлемый способ передачи информации между методами тестирования, содержащимися в разных узлах. Я попытался использовать статические переменные в общем родителе (безуспешно), и не могу найти ничего в документах testNG об установке глобальной переменной.
<suite name="UL" parallel="tests" thread-count="1" verbose="10">
<parameter name="env" value="jobcaseStaging6"/>
<parameter name="recordTests" value="1"/>
<listeners>
</listeners>
<test name="UL Tests firefox">
<classes>
<class name="tests.selenium_tests.ULTests">
<parameter name="browser" value="firefox"/>
</class>
</classes>
</test>
<test name="UL Tests chrome">
<classes>
<class name="tests.selenium_tests.ULTests">
<parameter name="browser" value="chrome"/>
</class>
</classes>
</test>
<test name="UL Tests safari">
<classes>
<class name="tests.selenium_tests.ULTests">
<parameter name="browser" value="bs_safari"/>
</class>
</classes>
</test>
<test name="UL Tests edge">
<classes>
<class name="tests.selenium_tests.ULTests">
<parameter name="browser" value="bs_edge"/>
</class>
</classes>
</test>
</suite>