WDIO - Selenium - 在所有其他人之前运行特定测试 - 具有特定功能

时间:2017-09-26 04:22:41

标签: selenium selenium-webdriver webdriver-io

我正在使用WebDriverIO,我想执行以下操作:

  • 在运行任何测试之前运行单个测试(createNewUsers)
  • 为第一次测试使用特定功能(代理设置)
  • 完成后,为其他所有内容使用一组默认功能

所以我似乎无法解决这个问题:

我尝试添加第二组功能并使用exclude参数确保它仅适用于该特定规范,但是,我不知道这是否真的可行,然后如何调用在我之前的块中的特定测试 - 所以我使用的功能:

exclude: [ './newUserCreationStage/newStageUsers.js' ],

但是在我之前的块中 - 我怎么说运行它(如果可能的话):

before: function (capabilities, specs) {
    expect = require('chai').expect;

    RUN THIS './newUserCreationStage/newStageUsers.js'
},

1 个答案:

答案 0 :(得分:0)

我想说你的设置需要一些不同的方法。首先看一下xUnit Fixture Setup Patterns。这个createNewUsers实际上可以通过SuiteFixture Setup,Prebuilt Fixture,Setup Decorator和Creation Method来实现。这会将SUT设置为所需状态,并且无需

  

在运行任何测试之前运行单个测试

更好 - 如果您有权访问,您可以播放数据库或调用API以在测试运行之前加载所有用户,数据和所需的任何内容。这也称为Back Door Manipulation。让您的CI服务器作为专门的步骤来处理所有这些。

由于您使用的是Mocha,因此您可以utilize tags以更好的方式整理套件和规格。这将允许您根据需要切换具有功能的驱动程序(读取测试需求,可能需要代理,其他不需要)。我建议也考虑mocha-tags。这里很合适的是Strategy pattern。它将允许您拥有许多仅在行为上有所不同的相关子类。