Ошибка при использовании одной и той же строки в разных тестах

#java #selenium #selenium-webdriver #junit #automation

#java #selenium #selenium-webdriver #junit #автоматизация

Вопрос:

У меня следующий сценарий: я выполняю несколько тестов (@Test) и тесты в Cucumber, в Selenium Webdriver, Java.

Тесты проходят хорошо. Однако я хочу оставить строку, сохраненную в одном @Test (public void), в другом @Test (public void). Я не могу.

Кто-нибудь может помочь?

Первый тест:

 @Test
public void testDocuments() {
     OneClass oneClass = new OneClass();
     oneClass.one();
     oneClass.two();
}
  

Второй тест:

 @Test
public void testDocuments() {
     OneClass oneClass = new OneClass();
     oneClass.one();
     oneClass.two();
}
  

Метод первый

 public String one() {
        if (this.cnpj == null) {
            this.cnpj = add.cnpj(false);
        } else {
        }
        return this.cnpj;
    }
  

В обоих тестах я хочу, чтобы вы использовали одну и ту же сгенерированную строку!!!!

Я с нетерпением жду и заранее благодарю!

Комментарии:

1. @marc Помнишь меня? lol Теперь проблема в том, чтобы сохранить строку в разных тестах, вы можете мне помочь? Спасибо!

Ответ №1:

Я не уверен, что делает ваш метод one(), но предполагая, что вы хотите использовать одно и то же значение для двух разных тестов, почему бы просто не сделать это:

 OneClass oneClass = new OneClass();
String yourGeneratedString = oneClass.one();  

// First test

@Test
public void testDocuments() {
     yourFunction(yourGeneratedString);
}

// Second test

@Test
public void testDocuments2() {
     yourOtherFunction(yourGeneratedString);
}
  

Комментарии:

1. Большое вам спасибо, @Michael S !!! Ошибка устранена!!! Это сработало!

Ответ №2:

Если я правильно понимаю, вам нужно, чтобы this.cnpj значение было доступно во втором тесте? Каждый раз, когда вы это делаете new OneClass() , создается новый ее экземпляр.

Итак, вы можете выполнить одно из следующих действий:

  • Используйте одноэлементный экземпляр OneClass
  • Создайте cnpj static поле внутри OneClass

Ответ №3:

Если я правильно понимаю, вы хотите передать данные из одного теста во второй. Если вы пользователь TestNG, то вы можете сделать это таким образом.

 import org.testng.ITestContext;
import org.testng.annotations.Test;

public class MyTest {

  @Test
  public void testOne(ITestContext context){
    context.setAttribute("myKey", "myValue");
  }

  @Test
  public void testTwo(ITestContext context){
    String valueFromTestOne = (String) context.getAttribute("myKey");
    System.out.println("My key = "   valueFromTestOne);
  }
}
  

введите описание изображения здесь