学习 NightWatch - BDD 语法

BDD (行为驱动开发) 测试语法

NightWatch 的 BDD 接口提供了一下功能:

  • describe() / context()
  • test() / it() / specify()
  • before()
  • after()
  • beforeEach()
  • afterEach()

例子

// ts
import {NightwatchTests} from 'nightwatch';

const Ecosia: NightwatchTests = {
  'demo test': () => {
    browser
      .url('https://www.ecosia.org/')
      .setValue('input[type=search]', 'nightwatch')
      .click('button[type=submit]')
      .assert.containsText('.mainline-results', 'Nightwatch.js')
      .end();
  }
};

export default Ecosia;

// js
describe('Ecosia', function() {

  // test() and specify() is also available

  it('demo test', function(browser) {
    browser
      .url('https://www.ecosia.org/')
      .setValue('input[type=search]', 'nightwatch')
      .click('button[type=submit]')
      .assert.containsText('.mainline-results', 'Nightwatch.js')
      .end();
  });
});

语法

检索设置

所有当前设置均可通过 获得。this.settings

describe('homepage test with describe', function() {
  console.log('Settings', this.settings);

  it('...', function() {
    // ...
  });
});

所需功能

测试套件特定功能。

describe('homepage test with describe', function() {
  this.desiredCapabilities = {};

  it('...', function() {
    // ...
  });
});

单元测试

如果当前测试是单元/集成测试(即不会创建 Web 驱动程序会话),请启用此选项;

describe('homepage test with describe', function() {
   this.unitTest = true;

   it('...', function() {
     // ...
   });
});

失败时结束会话

如果您希望浏览器窗口在发生故障或错误时保持打开状态,请将此项设置为(对调试很有用)。false

describe('homepage test with describe', function() {
   this.endSessionOnFail = false

   it('...', function() {
     // ...
   });
});

失败时跳过其余测试用例

如果您希望在断言失败/错误时执行其余测试用例/测试步骤,请将此项设置为false

describe('homepage test with describe', function() {
   this.skipTestcasesOnFail = true

   it('...', function() {
     // ...
   });
});

禁用/跳过测试套件

如果您希望测试运行程序跳过此测试套件,请将此项设置为 true

describe('homepage test with describe', function() {
   this.disabled = true

   it('...', function() {
     // ...
   });
});

重试

describe('homepage test with describe', function() {
  this.retries(3);
  this.suiteRetries(2);

  it('...', function() {
    // ...
    });
});

控制断言超时

控制断言和元素命令超时,直到应定位元素或传递断言

describe('homepage test with describe', function() {
  this.timeout(1000)

  it('...', function() {
    // ...
  });
});

控制轮询间隔

控制重试断言或元素命令之间的轮询间隔

describe('homepage test with describe', function() {
  this.retryInterval(100);

  it('...', function() {
    // ...
  });
});

定义标签

为此测试套件定义标记。

describe('homepage test with describe', function() {
  this.tags = ['login']

  it('...', function() {
    // ...
  });
});

测试函数和挂钩

describe('homepage test with describe', function() {

  before(function(browser) {
    this.homepage = browser.page.home();
  });

  it('startHomepage', () => {
    this.homepage.navigate();
    this.homepage.expect.section('@indexContainer').to.be.not.visible;
  });


  // 只运行一次
  //
  it.only('startHomepage', () => {
    this.homepage.navigate();
  });
  // 

  // 跳过的测试用例
  xtest('async testcase', async browser => {
    const result = await browser.getText('#navigation');
    console.log('result', result.value)
  });

  test('version dropdown is enabled', browser => {
    const navigation = this.homepage.section.navigation;
    const navbarHeader = navigation.section.navbarHeader;

    navbarHeader.expect.element('@versionDropdown').to.be.enabled;
  });

  after(browser => browser.end());
});

学习 NightWatch - BDD 语法
http://localhost:8080/archives/c8cffde6-785a-4b70-b8d8-5ad60f92676e
作者
inksha
发布于
2024年09月14日
许可协议