Как заставить тест транспортира провалиться, если функция не работает? - PullRequest
0 голосов
/ 30 апреля 2020

Таким образом, в основном у меня есть некоторый вспомогательный метод, который поможет мне отладить мои тесты транспортира, одним из моих главных является ожидание нажатия на элемент, я создаю этот l oop, чтобы дать транспортиру необходимое время чтобы найти и убедиться, что элемент включен, но когда элемент не найден, либо из-за того, что элемент не найден, либо из-за опечатки в моем скрипте, я бы хотел, чтобы тестовый запуск остановился и пометил его как FAILURE ..

 async WaitToBeClickable(element){
       try{
           for(var i = 0; i <= 3000; i++){
               var wait = await browser.wait(this.EC.elementToBeClickable(element), i);
               if(wait == true){
                   break;
               }else{
                   //this is where I want to fail
               }
           }
       }catch(err){
           //this is where I want to fail
           await console.log(`WAIT TO BE CLICKABLE FAILED:\n${element.parentElementArrayFinder.locator_.value}\n\nError:\n${err}\n`);
       }
   };

это помогло бы мне LOT отладить мой скрипт, так как я работаю над VS C, но я пока не могу найти способ сделать тест FAIL и тем самым ЗАКРЫТЬ браузер на Во-первых, я видел Protractor-Fail-Fast и Protractor-Bail-Fast, но, похоже, это для тестовых случаев с жасмином, а не для функции. Я действительно очень ценю любую помощь, пожалуйста, транспортир сводит меня с ума, LOL .. .

Ответы [ 3 ]

0 голосов
/ 30 апреля 2020

Если вы используете функцию выброса ошибки, вы можете просто использовать функцию done, которую обеспечивает жасмин

Пример:

it('should do something', async done => {

    try {
        await weDoSomething();
    } catch (e) {
        done.fail(e); // mark test as failed
    }

    done(); // mark test as done
}, 1 * 60 * 1000);

async function weDoSomething() {
    throw Error('failed function');
}
0 голосов
/ 30 апреля 2020

Вы пытались просто заново выкинуть ошибку в улове? Я считаю, что это должно вызвать сбой теста.

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

Вам не нужно ждать console.log, поскольку это синхронная операция. broser.wait s генерирует исключения, когда элемент не найден в течение периода ожидания, кажется, что для l oop вообще не требуется.

Эта функция будет ждать 3000 мс, пока элемент будет активен, и если этого не произойдет, это вызовет исключение, которое будет поймано в улове Он зарегистрирует сообщение, а затем повторно выдаст ошибку, которая не пройдёт тест (при условии, что ошибка не перехватывается и не обрабатывается далее)

async WaitToBeClickable(element){
  try {
    await browser.wait(this.EC.elementToBeClickable(element), 3000);

  } catch (err) {
    console.log(`WAIT TO BE CLICKABLE FAILED:\n${element.parentElementArrayFinder.locator_.value}\n\nError:\n${err}\n`);
    throw new Error(err);
  }
};
0 голосов
/ 30 апреля 2020
//method

const checkData = () = {
     return new Promise((resolve)=>{
           if(true){
               // Success case
               return resolve(true)
           }
           else{
               // Fail case
               return reject(false)
           }
  })
}


//Specfile

it('sample test',async ()=>{
    Let data = await checkData();
    expect(data).toEqual(true);
})

На основании разрешенного значения тест пройдёт или не пройдёт

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...