【问题标题】:Use the same variable in each test file在每个测试文件中使用相同的变量
【发布时间】:2015-06-12 12:05:18
【问题描述】:

出于测试目的,我使用了多个文件。每一个代表网站的一个部分进行测试。

在一个启动测试文件中,我为新案例的名称创建了变量,它看起来像:

var moment = require('../../../../../node_modules/moment');

describe('Create new case', function() {

    var caseNumber = moment().format('YYYYMMDD-HHmmss-SS');

但在最后的某个地方(在另一个测试文件中)我想再次使用这个caseNumber(与第一次测试中使用的完全相同,而不是生成新的)。

谁能告诉我如何在量角器中做到这一点?

【问题讨论】:

  • 需要节点模块时不需要相对路径,只需调用require('moment')

标签: angularjs selenium testing protractor end-to-end


【解决方案1】:

让一个测试依赖于另一个测试来定义和导出变量听起来不太正确。使用global 设置onPrepare() 内部的全局变量:

onPrepare: function() {
    global.caseNumber = moment().format('YYYYMMDD-HHmmss-SS');
},

然后,您将在所有测试中将 caseNumber 作为全局变量。

【讨论】:

  • 嗨@alecxe 谢谢,将它添加到protractor.conf 并添加了矩路径。工作正常。
【解决方案2】:

没有必要使用全局变量。您可以通过创建自己的模块并要求它来使其更具可读性:

//test/lib/homepage.js
var moment = require('moment');
module.exports = {
  caseNumber: moment().format('YYYYMMDD-HHmmss-SS'),

  getContent: function () {  //another example of reuse
    return element(by.css('body'));
  });
};

//test/homepage.spec.js
var page = require('./lib/homepage');

describe('Homepage', function() {
  it('should display correct date', function () {
    expect(page.getContent()).toContain(page.caseNumber);
  });
});

【讨论】:

  • 它是否更具可读性是有争议的,但这肯定会提供更好的模块化和关注点分离。我认为值得一提的是这是一个页面对象模式。谢谢!
猜你喜欢
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
  • 2016-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
相关资源
最近更新 更多