如何在Protractor e2e测试中正确地逐步完成不同页面的测试?

时间:2015-03-24 14:45:16

标签: angularjs jasmine protractor

我们想使用量角器访问页面,运行一些测试,然后转到另一个页面进行更多测试。但是后面的导航似乎会干扰上一页的测试。

这是结构:

describe('When user is an admin', function () {
    browser.get(browser.baseUrl + 'login');
    loginAs(roles.admin);
    wait();

    describe('After log in', function () {

        it('should redirect to the home page', function () {
            expect(browser.getCurrentUrl()).toBe(browser.baseUrl + 'home');
            expect(true).toBeTruthy();
        });

        it('should contain a "Locations" tab', function () {
            var tabLocations = element(by.id('tabLocations'));
            expect(tabLocations.isPresent()).toBeTruthy();
        });

        it('should contain a link to location list', function () {
            var linkLocation = element(by.linkText('Manage Locations'));
            expect(linkLocation.isPresent()).toBeTruthy();
        });

    });
});

上面粘贴的是第一页上的测试。

然后我们想在另一页上运行测试:(完整编码粘贴在下面)

describe('When user is an admin', function () {
    browser.get(browser.baseUrl + 'login');
    loginAs(roles.admin);
    wait();

    describe('After log in', function () {

        it('should redirect to the home page', function () {
            expect(browser.getCurrentUrl()).toBe(browser.baseUrl + 'home');
            expect(true).toBeTruthy();
        });

        it('should contain a "Locations" tab', function () {
            var tabLocations = element(by.id('tabLocations'));
            expect(tabLocations.isPresent()).toBeTruthy();
        });

        it('should contain a link to location list', function () {
            var linkLocation = element(by.linkText('Manage Locations'));
            expect(linkLocation.isPresent()).toBeTruthy();
        });

    });



    describe('at location manage page', function () {
        var listPage = new ListPage();
        listPage.visit('Manage Locations');
        wait();
        it('should be at the location list page', function () {
            expect(browser.getCurrentUrl()).toBe(browser.baseUrl + 'locations/list');
            expect(true).toBeTruthy();
        });
    });
});

第二个describe中的导航似乎在第一个it中执行describe语句之前运行,因此我在第一页上的测试失败。


我尝试将第二个describe(“位置管理页面”)放在第一个describe(“登录后”)中,但仍然遇到同样的问题。

所以我的问题是,在量角器中安排测试的正确方法是什么,以便后续测试中的导航将一直持续到之前的测试完成?

1 个答案:

答案 0 :(得分:4)

不要将代码放在describe中。把它放在beforeAll(function(){})(茉莉花2)或beforeEach(function() {})

那应该解决你的问题。