Webdriver.IO:如何使用 WDIO 运行 Jasmine 中的特定 'it' 语句
Webdriver.IO: How do I run a specific 'it' statement in Jasmine using WDIO
我正在尝试从使用 Jasmine 框架 (wdio-jasmine-framework
) 编写的回归套件中提取一个冒烟套件。
是否可以只在 Jasmine 中的特定测试用例上添加标签?
如果我在 Jasmine/Mocha 的日子里没有记错的话,有几种方法可以实现这一点。我会详细说明一些,但我相信可能还有其他一些。使用最适合您的那个。
1. 在 条件运算符表达式 中使用 it.skip()
语句来定义测试用例的状态(例如:在 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
here。
3. 将 runtime skip (.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
属性 ).
我正在尝试从使用 Jasmine 框架 (wdio-jasmine-framework
) 编写的回归套件中提取一个冒烟套件。
是否可以只在 Jasmine 中的特定测试用例上添加标签?
如果我在 Jasmine/Mocha 的日子里没有记错的话,有几种方法可以实现这一点。我会详细说明一些,但我相信可能还有其他一些。使用最适合您的那个。
1. 在 条件运算符表达式 中使用 it.skip()
语句来定义测试用例的状态(例如:在 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
here。
3. 将 runtime skip (.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
属性 ).