Имею строчку в коде:
private String host;
Имею файл testng.xml, в котором указал параметр:
<parameter name="host" value="//localhost" />
Переменная host у меня не юзается внутри метода, если бы так - то я использовал бы аннотацию @Parameters
Как мне загрузить этот параметр из testng.xml?
1 лайк
joemast
(Александр Таранков)
07.Сентябрь.2015 11:16:58
#2
Аннотацию @Parameters
можно использовать не только с тестовым методом, но и, например, с @BeforeMethod
или @BeforeTest
и там прочитать значение.
Или в чём вопрос?
1 лайк
Да, но тогда эти параметры нужно будет поместить во внутрь функции, а они у меня просто как поля класса, вне функций.
joemast
(Александр Таранков)
07.Сентябрь.2015 11:24:11
#4
По простому схема работы с внешними параметрами может выглядеть так:
в testng.xml есть параметры (они могут также передаваться через параметры командной строки или через окружение, не суть важно)
при старте теста (например @BeforeTest
) ты читаешь эти параметры в поля класса, от которого наследуются тесты
у этого класса есть get-методы (геттеры), которые возвращают значения приватных полей класса. Они могут иметь модификаторы public
в тестах дергаешь эти геттеры для чтения параметров
Это только одна из реализаций, просто для примера
1 лайк
ArtOfLife
(Sergey Korol)
07.Сентябрь.2015 11:48:56
#5
@BeforeMethod
public void setUp(ITestContext context) {
Map<String, String> parameters = context.getCurrentXmlTest().getAllParameters();
}
П.С. Подойдет любая аннотация Before
, где виден текущий контекст. Чтобы получить локальные изолированные параметры методов (include
), придется залезть глубже в структуру контекста.
Предвкушая возможный вопрос: нет, вызывать метод самостоятельно не нужно, контекст будет вставлен автоматически (если конечно ваш Before
метод находится в области видимости теста, к примеру, в родительском классе).
1 лайк