Есть необходимость проверять запущен ли какой-либо тест. Например, в момент выполнения ДатаПровайдера.
Пока есть идея использовать вызов getTestContexts() из TestListenerAdapter
Но идея выглядит как-то странно. Помогите, куда копать?)
Напишите, чего вы в конечном счете хотите добиться, может быть кто-то подскажет решение получше.
В датапровайдере при подготовке данных, вызывается метод. Назовем его A
В этом методе A
я хочу знать, вызван он в рамках запущенного теста или никакой тест еще фактически не стартанул
вопрос может быть легче решить в коде самого дата провайдера - заведите там статическое поле указывающее был он вызван или нет еще и или сколько раз
кем был вызван это более сложный вопрос
на самом деле есть возможность и метод который вызвал датапровайдер узнать . вам все еще надо ?
метод который дата провайдер обязан реализовать уже имеет нужную сигнатуру
@DataProvider(parallel = false, name = "csv")
public static String[][] createData_from_csv(final ITestContext context, final Method method) {
// sometimes specific behavior is required from custom data provider caller
// see also:
// https://automated-testing.info/t/testng-kak-poluchit-itestcontext-v-lyuboj-moment-vypolneniya-testa/25973/5
// (in Russian)
if (debug) {
System.err.println(String.format("Providing data to method: '%s' of test '%s'", method.getName(),
context.getCurrentXmlTest().getName()));
}
в итоге видим
Providing data to method: 'testFilteredData' of test 'Parse Search Result'
Opening Filtered Example
Reading Open Office Spreadsheet : Filtered Example
Determine control column index for ENABLED
Processing column # 0 row 0 A ID
Processing column # 1 row 0 B SEARCH
Processing column # 2 row 0 C COUNT
Processing column # 3 row 0 D ENABLED
здесь еще печатает детали собственно чтения файла с данными
к вопросу определения вызывающего метода не относится
Не, дело было в другом. Но все равно спасибо за участие
не говорите загадками
Но ведь я выше и написала что мне нужно. Вот же
ну так и имплементируйте - как узнать кто вызвал дата провайдер я показал
историю вызовов можно хранить где то - для этого классы вообще то и придуманы чтобы иметь поведение
берете свой датапровайдер класс и в него добавляете это поведение
логика обработки это уж ваша задача
по моему
задача форума - помочь, а не предоставить готовое решение…
Вас ведь насильно никто сюда не притащил? Что вы так злитесь. Был конкретный вопрос.
Получение контекста в любой
момент выполнения
Где-то что-то хранить
конечно же можно. И я могу это сделать, не вопрос. Вопрос был в другом. Мне не нужно знать кто вызывал Датапровайдер. Вообще такого вопроса не стояло
Вопрос был конкретно про какой-то абстрактный метод, при вызове которого я хочу понять, стартовал уже тест или все еще выполняется датапровайдер/метод инициализации
для любого вообще узнать стек вызова думаю довольно дорого
если интересующий метод принадлежит классу дата провайдера то стек со стороны тестов доступен