在使用Protractor进行E2E测试时使用数据对象



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

相关内容

  • 没有找到相关文章

最新更新