Webdriver.IO: Как выполнить конкретное «it» выражение в Jasmine, используя WDIO - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь извлечь набор дыма из моего набора регрессии, написанного с использованием фреймворка Jasmine (wdio-jasmine-framework).

Можно ли просто добавить тег на конкретные тестовые случаи в Жасмин?

1 Ответ

0 голосов
/ 24 января 2019

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

1. Используйте оператор it.skip() внутри выражения условного оператора для определения состояния тестового случая (например, в случаеa smokeRun, пропустите тесты на отсутствие дыма, используя: (smokeRun ? it.skip : it)('not a smoke test', () => { // > do smth here < });).

Вот расширенный пример:

// Reading the smokeRun state from a system variable:
const smokeRun = (process.env.SMOKE ? true : false);

describe('checkboxes testsuite', function () {

    // > this IS a smoke test! < //
    it('#smoketest: checkboxes page should open successfully', () => {
        CheckboxPage.open();
        // I am a mock test... 
        // I do absolutely nothing!
    });

    // > this IS NOT a smoke test! < //
    (smokeRun ? it.skip : it)('checkbox 2 should be enabled', () => {
        CheckboxPage.open();
        expect(CheckboxPage.firstCheckbox.isSelected()).toEqual(false);
        expect(CheckboxPage.lastCheckbox.isSelected()).toEqual(true);
    });

    // > this IS NOT a smoke test! < //
    (smokeRun ? it.skip : it)('checkbox 1 should be enabled after clicking on it', () => {
        CheckboxPage.open();
        expect(CheckboxPage.firstCheckbox.isSelected()).toEqual(false);
        CheckboxPage.firstCheckbox.click();
        expect(CheckboxPage.firstCheckbox.isSelected()).toEqual(true);
    });
});

2. Используйте it.only() для достижения в основном того же эффекта,Разница заключается в рабочей нагрузке рефактора в тестовом случае.Я обобщу эти идеи следующим образом:

  • , если у вас больше тестов на дым * , чем тестов на дым , используйте подход it.skip();
  • если у вас больше тестов на дым , чем тестов на дым , используйте подход it.only();

Подробнее о pending-tests можно прочитать здесь .


3. Использовать время выполнения пропустить (.skip()) в сочетании с некоторыми вложенными describe утверждениями.

Это должно выглядеть примерно так:

// Reading the smokeRun state from a system variable:
const smokeRun = (process.env.SMOKE ? true : false);

describe('checkboxes testsuite', function () {

    // > this IS a smoke test! < //
    it('#smoketest: checkboxes page should open successfully', function () {
        CheckboxPage.open();
        // I am a mock test... 
        // I do absolutely nothing!
    });

    describe('non-smoke tests go here', function () {
        before(function() {
            if (smokeRun) {
                this.skip();
            }
        });
        // > this IS NOT a smoke test! < //
        it('checkbox 2 should be enabled', function () {
            CheckboxPage.open();
            expect(CheckboxPage.firstCheckbox.isSelected()).toEqual(false);
            expect(CheckboxPage.lastCheckbox.isSelected()).toEqual(true);
        });
        // > this IS NOT a smoke test! < //
        it('checkbox 1 should be enabled after clicking on it', function () {
            CheckboxPage.open();
            expect(CheckboxPage.firstCheckbox.isSelected()).toEqual(false);
            CheckboxPage.firstCheckbox.click();
            expect(CheckboxPage.firstCheckbox.isSelected()).toEqual(true);
        });
    });
});

! Примечание: Это рабочие примеры!Я протестировал их, используя рекомендованный WebdriverIO проект Jasmine Boilerplace .

! Obs: Существует несколько способов фильтрации тестов Jasmine, к сожалению, только при тестировании-файл ( testsuite ) (например: с использованием grep операторов по трубопроводу или встроенных атрибутов WDIO specs & exclude ).

...