Protractor 在量角器中的所有测试套件之前运行一些功能

Protractor 在量角器中的所有测试套件之前运行一些功能,protractor,end-to-end,Protractor,End To End,在运行量角器中的任何套件之前,是否可以运行一些测试或逻辑流 例如,我想将量角器测试分解为一系列套件,用于测试应用程序的不同方面。假设Jenkins将在部署之前运行整个测试套件,但是单个开发人员将只运行与他们所做工作相关的套件 但是我希望我的大多数套件都能够登录到应用程序,我不希望在每个套件中重复这种登录逻辑。有没有一种方法可以在运行所有测试之前进行预套件测试,比如登录 我想把它列出来,在我的量角器配置中定义我的套件 suites: { 'my-profile': [ './e2e/l

在运行量角器中的任何套件之前,是否可以运行一些测试或逻辑流

例如,我想将量角器测试分解为一系列套件,用于测试应用程序的不同方面。假设Jenkins将在部署之前运行整个测试套件,但是单个开发人员将只运行与他们所做工作相关的套件

但是我希望我的大多数套件都能够登录到应用程序,我不希望在每个套件中重复这种登录逻辑。有没有一种方法可以在运行所有测试之前进行预套件测试,比如登录

我想把它列出来,在我的量角器配置中定义我的套件

suites: {
  'my-profile': [
    './e2e/login/login-as-customer.e2e-spec.js',
    './e2e/my-profile/my-profile-change-password.e2e-spec.js',
    './e2e/my-profile/my-profile-change-username.e2e-spec.js'
  ],
  'my-contacts': [
    './e2e/login/login-as-customer.e2e-spec.js',
    './e2e/my-contacts/add-contact.e2e-spec.js',
    './e2e/my-contacts/remove-contact.e2e-spec.js'
  ]
}
但问题是,我不希望每次我们一起运行整个测试套件时,或者如果开发人员希望一起运行多个套件,都必须重新登录。我需要的是一个套房前的步骤


使用量角器是否可以执行此操作?

您正在conf文件中查找
onPrepare()
函数。该函数在测试套件之前运行。下面是一个例子


您不能在规范中使用
beforeAll()
登录?我认为这仍然会导致在每个测试套件之前登录,即使在一起运行时也是如此。我说的是在所有测试套件之前进行此操作,而不是在所有规范之前。是否有方法为某些测试套件指定一个
onPrepare
,为其他测试套件指定另一个
onPrepare
?例如,如果一些测试需要使用一种类型的帐户登录,而其他测试则需要使用不同的帐户登录?不完全如此,否。为此,我建议为每个测试套件提供单独的conf文件。您可以使用conf.js中的params对象提供特定于测试运行的数据,如帐户登录或密码等。对于定义为-params:{login:{email:'default',password:'default'}}@A.Duff我所做的是为每个用户创建一个新的浏览器,并将所有用户交互保持在相同的测试套件中。@Grasshopper我相信实现您所提出的内容的完整指南如下:
onPrepare: function() {
    browser.driver.get(env.baseUrl + '/ng1/login.html');

    browser.driver.findElement(by.id('username')).sendKeys('Jane');
    browser.driver.findElement(by.id('password')).sendKeys('1234');
    browser.driver.findElement(by.id('clickme')).click();

    // Login takes some time, so wait until it's done.
    // For the test app's login, we know it's done when it redirects to
    // index.html.
    return browser.driver.wait(function() {
      return browser.driver.getCurrentUrl().then(function(url) {
        return /index/.test(url);
      });
    }, 10000);
  }