может ли поставщик данных передавать данные в @BeforeTest

Я хочу знать, может ли поставщик данных передавать данные в @BeforeTest вместе с @Test. Я работаю над скриптом, в котором я хочу передать некоторые данные @BeforeTest и выполнить некоторые операции. Если это возможно, пожалуйста, поделитесь логикой. Спасибо


person autoD    schedule 14.10.2015    source источник


Ответы (2)


Невозможно использовать поставщиков данных с @BeforeTest (и, возможно, любыми другими @BeforeX методами), но вы можете использовать метод before @Test, где все остальные методы @Test зависят (dependsOnMethods):

@Test(dataProvider="dp")
public void beforeTest(<params...>) {
    <...>
}

@Test(dependsOnMethods="beforeTest") {
    <...>
}

Но будь осторожен! TestNG не является JUnit, тогда @BeforeTest != @BeforeMethod.

person juherr    schedule 14.10.2015
comment
Если невозможно передать данные в @BeforeTest, есть ли способ, с помощью которого я могу передать ему данные от поставщика данных. Способ, с помощью которого данные могут быть общедоступными и доступными за пределами поставщика данных. - person autoD; 15.10.2015
comment
В моем примере я использую не @BeforeTest, а @Test и имитирую его с помощью dependOnMethods. Я думаю, что вы не соответствуете @BeforeTest и @BeforeMethod, проверьте документацию. - person juherr; 15.10.2015
comment
я понял, но мой случай отличается, здесь я хочу войти на веб-сайт один раз, чтобы код входа, который я хотел, был в @beforetest, и выполнять другие мои операции в @test , которые будут выполняться более одного раза, но поскольку доступ к ним невозможен данные от поставщика данных снаружи, есть ли другой способ, с помощью которого это может быть достигнуто. относительно этого dependsonmethod я пробовал, выдает ошибку - person autoD; 15.10.2015
comment
Вы должны привести конкретный пример - person juherr; 15.10.2015
comment
Возможно, вам нужны factories. - person juherr; 19.10.2015

Это возможно. Передайте параметры через свой XML-код TestNG и прочитайте их, используя ITTestContext внутри вашего @BeforeClass.

Просто используйте

контекст.getCurrentXmlTest().getParameters()

  @SuppressWarnings("deprecation")
  @BeforeClass
  public void setUp(ITestContext context) {
  System.out.println(context.getCurrentXmlTest().getParameters());    

  }
person Ben Herron    schedule 28.10.2017