所以我和一位同事正在讨论为我们的 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() {
});
});