使用 Nightwatchjs 在 运行 时间有条件地 运行 测试

Conditionally run tests at runtime using Nightwatchjs

我正在使用 nightwatch 来 运行 我的端到端测试,但我想在 运行 时间根据一些全局设置有条件地 运行 某些测试。

// globals.js
module.exports = {
    FLAG: true
};

// test.js
describe('Something', () => {
  it('should do something', client => {
      if (client.globals.FLAG) {
          expect(1).to.equal(1);
      }
  });
});

以上工作正常,但我想静默整个测试并有条件地包含 it 例如:

// test.js
describe('Something', () => {
  // client does not exist out here so it does not work.
  if (client.globals.FLAG) {
      it('should do something', client => {
          expect(1).to.equal(1);
      });
  }
});

我知道我可以通过在 nightwatch.js 中定义它们并排除文件等来跳过测试,但这不是我可以在此实现中使用的方法。另一种解决方案可能是使用标签,但我不确定使用 Mocha 是否可行。

您可以通过导入模块来访问第二个示例中的标志 globals.js:

// test.js

const globals = require('../globals.js');

describe('Something', () => {

  if (globals.FLAG) {
      it('should do something', client => {
          expect(1).to.equal(1);
      });
  }
});

您还可以创建一个函数来在满足条件时忽略测试:

// test.js

const FLAG = require('../globals.js').FLAG;
const not = function(v){ return {it: v ? function(){}: it} };

describe('Something', () => {

  not(FLAG).it('should do something', client => {
      expect(1).to.equal(1);
  });

});