Сравнить текст с несколькими значениями
Учусь писать автотесты на java + testNg.
Задание заключается в том, чтобы провести регистрацию с ошибкой нескольких аккаунтов и проверить ошибки. Я использую @DataProvider чтобы поместить там всю информацию для полей ввода и один @Test для прогона. В этом суть задания.
Также, нужно провести assert полученной ошибки. Каждый раз ошибка разная и я ищу способ, как можно сравнить одну строку с несколькими и как записать такой метод.
Пробовал добавить строки с ошибками в файл c DataProvider, но в таком случае тест даже не запускается
package ui_tests;
public class DataProvider {
@org.testng.annotations.DataProvider(name = "LoginData")
public static Object[][] dataProviderMethod() {
Object[][] data = new Object[4][7];
data[0][0] = "AlexWind";
data[0][1] = "asdqweQwse1123";
data[0][2] = "asdqweQse1123";
data[0][3] = "Alex";
data[0][4] = "Finch";
data[0][5] = "[email protected]";
data[0][6] = "blessed";
data[1][0] = "SashaBoozer";
data[1][1] = "asdqweQwse1123";
data[1][2] = "asdqweQwse1123";
data[1][3] = "Sasha";
data[1][4] = "Fincher";
data[1][5] = "testtest.com";
data[1][6] = "godDamnThisTest";
data[2][0] = "AlenaMix";
data[2][1] = "a1";
data[2][2] = "a1";
data[2][3] = "Alena";
data[2][4] = "Smith";
data[2][5] = "[email protected]";
data[2][6] = "whatAmIdoingWithMyLife";
data[3][0] = "Пароль не совпадает с подтверждением";
data[3][1] = "Email имеет неверное значение";
data[3][2] = "Пароль недостаточной длины (не может быть меньше 4 символа)";
return data;
}
}
Ответы (1 шт):
Если возникают разные ошибки, для них следует писать разные тесты.
В указанном наборе данных просматриваются три теста, и соответствующая ошибка должна быть перенесена в каждый тест, например, так:
@DataProvider(name = "soTest")
public static Object[][] dataProviderMethod() {
Object[][] data = new Object[3][8]; // коррекция размеров!
data[0][0] = "AlexWind";
data[0][1] = "asdqweQwse1123";
data[0][2] = "asdqweQse1123";
data[0][3] = "Alex";
data[0][4] = "Finch";
data[0][5] = "[email protected]";
data[0][6] = "blessed";
data[0][7] = "Пароль не совпадает с подтверждением";
data[1][0] = "SashaBoozer";
data[1][1] = "asdqweQwse1123";
data[1][2] = "asdqweQwse1123";
data[1][3] = "Sasha";
data[1][4] = "Fincher";
data[1][5] = "testtest.com";
data[1][6] = "godDamnThisTest";
data[1][7] = "Email имеет неверное значение";
data[2][0] = "AlenaMix";
data[2][1] = "a1";
data[2][2] = "a1";
data[2][3] = "Alena";
data[2][4] = "Smith";
data[2][5] = "[email protected]";
data[2][6] = "whatAmIdoingWithMyLife";
data[2][7] = "Пароль недостаточной длины (не может быть меньше 4 символа)";
return data;
}
Тогда, предполагая что у вас есть некий валидатор данных, принимающий на вход метода validate 6 полей и возвращающий ошибку, можно написать такой тест:
@Test(dataProvider = "soTest")
public void soTest(String login, String pass1, String pass2, String fname, String lname, String email, String secret, String errorMessage) {
assertEquals(myValidator.validate(login, pass1, pass2, fname, lname, email, secret), errorMessage);
}