Size: a a a

QA — Автоматизация

2020 September 12

СС

Сказочный Сникерс... in QA — Автоматизация
Dmytro Dubovets
не знаю, как продлжить тест дальше
Я тебе сказал что гуглить)
источник

DD

Dmytro Dubovets in QA — Автоматизация
Да, после каждой стрлки не очень хороший вариант
источник

DD

Dmytro Dubovets in QA — Автоматизация
Не примвт
источник

S1

Sceptic 1234 in QA — Автоматизация
я ещё не совсем понимаю зачем ты пытаешься засунуть логику по закрытию этого попапа в бефор или афтер - ведь он может спокойно вылезти прямо в процессе выполнения тестового сценария
источник

S1

Sceptic 1234 in QA — Автоматизация
а не вариант просто залогиниться на этом сайте, чтобы окно это не лезло?
источник

DD

Dmytro Dubovets in QA — Автоматизация
Sceptic 1234
а не вариант просто залогиниться на этом сайте, чтобы окно это не лезло?
Нет, это же логично, нужно именно этот подход
источник

i

i think it's okay in QA — Автоматизация
Evgenii B
поэтому я и предложил обработать validation error, а подробности вытащить в assertion error
static final class MyError
       {

               public boolean isError;
               public String error;

               public MyError(boolean isError, String error) {
                   this.isError = isError;
                   this.error = error;
               }
           }

Я создал в хелпере класс с двумя полями - булевый и стринговый.
А в методе с валидацией делаю так:
 Schema schema = SchemaLoader.load(jsonSchema);

        try {
            schema.validate(json);
            return new MyError(true,"");
        }
        catch (ValidationException exception)
        {
            return new MyError(false,exception.getErrorMessage());
        }

чтобы в тесте можно было ассерт положить:

@Test
public void test2() {

org.json.JSONObject jsonResponse = helperReq.sendRequestGetJSON(PATH,"");
HelperReq.MyError x = helperReq.validateSchemaV4(BASE_SCHEMA,jsonResponse);
assertTrue(x.isError,x.error);
}


По итогу я просто хотел из метода вытаскивать две переменные : текст ошибки и true/falsе
чтобы в тесте делать ассерт и из самого теста ошибку выводить
источник

S1

Sceptic 1234 in QA — Автоматизация
Dmytro Dubovets
Нет, это же логично, нужно именно этот подход
ну тогда как сникерс написал делай. лучше вариант это долго думать надо
источник

СС

Сказочный Сникерс... in QA — Автоматизация
Лучше варианта возможно и нет, по крайней мере я в свое время лучше не придумал. А навык полезный, можно потом прикручивать фоновый поиск ошибок например
источник

СС

Сказочный Сникерс... in QA — Автоматизация
Да и в целом надо понимать что такое треды, гонки, околопараллельное исполнение кода итд
источник

S1

Sceptic 1234 in QA — Автоматизация
единственное что смущает - можно всё равно словить нот кликабл эксепшен пока соседний тред закрывающий попапы не отработает
источник

EB

Evgenii B in QA — Автоматизация
Для того чтобы не словить этот эксепшн, нужно проставлять таймаут поиска нужного элемента, который надежно даёт тругому треду время закрыть попал в 99.99% случаев
источник

СС

Сказочный Сникерс... in QA — Автоматизация
Sceptic 1234
единственное что смущает - можно всё равно словить нот кликабл эксепшен пока соседний тред закрывающий попапы не отработает
Все все равно делают почти любой поиск на ожиданиях. Вот в свое кастомное ожидание и запихнуть обработку такого случая. Опять же этот второй тред может работать очень часто и проставлять какой либо флаг о своем статусе. В общем тут уже дело в синхронизации двух потоков и обработке возможной гонки
источник

EB

Evgenii B in QA — Автоматизация
Можно погонять решение фонового поллера по закрытию попапа чтобы выявить его производительность и характер работы. Посчитать безопасный промежуток когда он гарантированно закрывает попап, и добавить какое-то буфферное дополнительное к нему время и сделать это таймаутом поиска элементов
источник

S1

Sceptic 1234 in QA — Автоматизация
в смысле я имею в виду что этот момент надо учесть и тоже придумать решение.
я например на клик и сендкейс просто написал методы свои в которых перед кликом проверяю что элемент на странице и кликабл с вейтом и во всём фреймворке юзаю взаимодействия с элементами только через эти методы
правда я нуб, может это всё плохо, я хз
источник

СС

Сказочный Сникерс... in QA — Автоматизация
Sceptic 1234
в смысле я имею в виду что этот момент надо учесть и тоже придумать решение.
я например на клик и сендкейс просто написал методы свои в которых перед кликом проверяю что элемент на странице и кликабл с вейтом и во всём фреймворке юзаю взаимодействия с элементами только через эти методы
правда я нуб, может это всё плохо, я хз
Так и надо)
источник

СС

Сказочный Сникерс... in QA — Автоматизация
Именно поэтому я считаю что селенид не панацея ибо все равно нужен свой кастом
источник

B

Bola in QA — Автоматизация
Для хрома/ff мне проще  написать extension, которое будет постоянно мочить попапы).
источник

MK

Mem Kekovich in QA — Автоматизация
i think it's okay
static final class MyError
       {

               public boolean isError;
               public String error;

               public MyError(boolean isError, String error) {
                   this.isError = isError;
                   this.error = error;
               }
           }

Я создал в хелпере класс с двумя полями - булевый и стринговый.
А в методе с валидацией делаю так:
 Schema schema = SchemaLoader.load(jsonSchema);

        try {
            schema.validate(json);
            return new MyError(true,"");
        }
        catch (ValidationException exception)
        {
            return new MyError(false,exception.getErrorMessage());
        }

чтобы в тесте можно было ассерт положить:

@Test
public void test2() {

org.json.JSONObject jsonResponse = helperReq.sendRequestGetJSON(PATH,"");
HelperReq.MyError x = helperReq.validateSchemaV4(BASE_SCHEMA,jsonResponse);
assertTrue(x.isError,x.error);
}


По итогу я просто хотел из метода вытаскивать две переменные : текст ошибки и true/falsе
чтобы в тесте делать ассерт и из самого теста ошибку выводить
My eyes... господи сделайте ассерт в самом методе уже и там кидается мессадж какой нужен
источник

EB

Evgenii B in QA — Автоматизация
i think it's okay
static final class MyError
       {

               public boolean isError;
               public String error;

               public MyError(boolean isError, String error) {
                   this.isError = isError;
                   this.error = error;
               }
           }

Я создал в хелпере класс с двумя полями - булевый и стринговый.
А в методе с валидацией делаю так:
 Schema schema = SchemaLoader.load(jsonSchema);

        try {
            schema.validate(json);
            return new MyError(true,"");
        }
        catch (ValidationException exception)
        {
            return new MyError(false,exception.getErrorMessage());
        }

чтобы в тесте можно было ассерт положить:

@Test
public void test2() {

org.json.JSONObject jsonResponse = helperReq.sendRequestGetJSON(PATH,"");
HelperReq.MyError x = helperReq.validateSchemaV4(BASE_SCHEMA,jsonResponse);
assertTrue(x.isError,x.error);
}


По итогу я просто хотел из метода вытаскивать две переменные : текст ошибки и true/falsе
чтобы в тесте делать ассерт и из самого теста ошибку выводить
Чёт какая-то муть. В методе валидации поймай ошибку валидации, получи текст ошибки и возбуди исключение assertion error, все! Никаких assert в тесте не оставляй.
источник