Webdriver.io - 如何在配置中使用 beforeEach 钩子

问题描述 投票:0回答:1

我正在使用 MEAN 堆栈和 Webdriver 构建一个应用程序进行测试。

目前我正在使用 Mocha 的 beforeEach 和 afterEach 钩子在测试之间清理数据库,例如:

describe('Links', function() {
  // drop DB collections

  beforeEach(function(done){
    //create database objects
  });

  afterEach(function(done){
    // drop DB collections
  });
});

有没有办法设置 wdio.conf.js 以便在每次测试之前和之后自动发生这种情况?配置的

before:
after: function() {}
作为 beforeAll / afterAll 运行,而不是针对每个测试运行。

node.js database selenium webdriver mean
1个回答
0
投票

是的,请参阅此网址:http://webdriver.io/guide/testrunner/gettingstarted.html

如果启动 wdio 配置,将生成一个名为 wdio.conf.js 的文件,此文件中存在在测试之后或之前启动脚本的函数,我显示包含此文件的函数示例:

// =====
// Hooks
// =====
// Run functions before or after the test. If one of them returns with a promise, WebdriverIO
// will wait until that promise got resolved to continue.
//
// Gets executed before all workers get launched.
onPrepare: function() {
    // do something
},
//
// Gets executed before test execution begins. At this point you will have access to all global
// variables like `browser`. It is the perfect place to define custom commands.
before: function() {
    // do something
},
//
// Gets executed after all tests are done. You still have access to all global variables from
// the test.
after: function(failures, pid) {
    // do something
},
//
// Gets executed after all workers got shut down and the process is about to exit. It is not
// possible to defer the end of the process using a promise.
onComplete: function() {

    // do something
}

重要的是,如果您异步启动脚本,并且在清理数据库时等待回调,那么您需要一个承诺,否则下一步钩子将启动而不等待上一个函数钩子,例如:

    onPrepare: function() {
    return new Promise(function(resolve, reject) {
        sauceConnectLauncher({
          username: 'the_pianist2',
          accessKey: '67224e83a-1cf7440d-8c88-857c4d3cde49',
        }, function (err, sauceConnectProcess) {
            if (err) {
                return reject(err);
            }
            console.log('success');
            resolve();
        });
    });


},
© www.soinside.com 2019 - 2024. All rights reserved.