所以我和一位同事正在讨论为我们的e2e测试创建一个数据对象。根据我对数据对象的理解,它们用于解耦测试套件。例如,我的第一个测试套件是创建一个帐户并测试字段是否有效,第二个测试套件登录到该帐户并进行自己的测试。有人告诉我,最好使用数据对象(而不是页面对象),以防在创建帐户时第一个测试套件失败。这样,我们就可以使用第二个测试套件中的数据对象来创建一个新用户,只用于测试登录。我的问题是,如果我的第一个测试套件无法创建帐户,为什么在我的第二个测试套件中创建帐户会通过?无论我在第一个测试套件中遇到什么错误,我都应该在第二个测试套件,对吧?我还有很多关于数据对象以及如何使用它们的问题。我想知道是否有人能解释数据对象以及如何使用/编写数据对象。
/***
Test Data Object
***/
var Member = function() {
var unixTime = String(Math.round(new Date()/1000));
this.username = "TestAccount" + unixTime;
this.email = this.username + "@gmail.com";
this.password = "password";
};
Member.prototype.create = function () {
var signup = new signupPage.Signup();
signup.getPage();
signup.memberAs(this.username, this.email, this.password);
};
Member.prototype.login = function () {
var login = new loginPage.Login();
login.getPage();
login.memberAs(this.username, this.password);
};
Member.prototype.logout = function () {
// k.logoutMember();
};
exports.Member = Member;
这是我同事写的数据对象。我们还没有完成测试,因为我们停下来仔细思考,但以下是我们迄今为止的测试。
var chai = require('chai');
var chaiAsPromised = require("chai-as-promised");
var expect = chai.expect;
var member = require('./lib/test-data');
chai.use(chaiAsPromised);
describe.only('Member Account Settings and Information', function() {
before(function () {
member.create();
});
before.each(function() {
member.login();
});
describe('My Account', function () {
it('Logging in should enable the "My Account" link.', function() {
member.login();
});
it('Clicking on "My Account" should expand the account options', function() {
});
});
我对数据对象使用散列。下面是我在GitHub上的dractor_example代码中的一个例子。
给定一个数据文件:
var UserData = function() {
this.testUser = {'username': 'test', 'password': 'test'};
};
module.exports = new UserData();
然后规格…
describe ('non-angular login test', function() {
var loginPage = require('../pages/nonAngularLoginPage.js');
var userData = require('../data/userData.js');
it('should goto friend pages on successful login', function() {
loginPage.loginAs(userData.testUser);
expect(browser.getTitle()).toContain('Angular JS Demo');
});
});