Webdriver.IO:如何使用WDIO在Jasmine中运行特定的“ it”语句

时间:2019-01-23 17:39:28

标签: jasmine automated-tests webdriver-io wdio-jasmine

我正在尝试从使用Jasmine框架(wdio-jasmine-framework)编写的回归套件中抽出烟雾套件。

是否可以在Jasmine中的特定测试用例上添加标签?

1 个答案:

答案 0 :(得分:2)

如果我在茉莉花/摩卡咖啡的日子里没记错的话,有几种方法可以实现。我会详细说明一些,但我敢肯定还会有其他一些。使用最适合您的一种。

1 。在条件运算符表达式 中使用smokeRun语句定义测试用例的状态(例如:对于{ {1}},请跳过使用(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 here


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 )级别(例如:< em>使用grep管道语句,或内置的WDIO specsexclude属性)。