针对许多网站运行茉莉花测试

时间:2017-10-10 21:35:32

标签: javascript jasmine webdriver-io

我正在测试一个Web过滤器,并希望运行一个简单的测试来验证页面是否被阻止。我还想在数百页上运行这个测试。以下代码适用于单个页面:

for (var n = 0; n < 3; n++) {
     describe("Blocked Sites", () => {

        it('should block ', () => {
            sites.pageGo();
            expect(sites.blockedIDOnLoad.isVisible()).toBeTruthy;
        });

    });

}

每次循环重复时,

sites.pageGo()都会提供下一个站点。只要pageGo()提供的每个页面都被阻止,这就很有效。例如,如果它循环3次,我将获得3次通过测试。我可以看到浏览器加载每个不同的页面并被阻止。但是,如果未阻止任何页面,则所有测试都将失败。我想针对许多网站运行此测试(一些被阻止,一些没有)。在自动化测试方面,我是初学者,我非常感谢您提供的任何指导/知识。有没有办法用我当前的框架实现这个测试,还是有更好的方法?

2 个答案:

答案 0 :(得分:0)

我能够通过使用for ...循环来实现它。这对我有用。希望这会有所帮助。

首先我设置了一个网站类。

export default class Site {
    url: string;
    id: string;

    constructor(url: string, id: string) {
        this.url = url;
        this.id = id;
     }

    get blockedIDOnLoad() { return browser.element(this.id); }    
}

然后测试看起来像这样......

import site from './site';

describe("Blocked Sites", () => {
    //obviously you wouldn't do it this way for a bunch of sites
    //should help get the idea across though
    const sites = [ new site("http://www.google.com", "#lst-ib"),
        new site("http://facebook.com", "#blockedId"),
        new site("http://twitter.com", "#blockedId") ];    

    for (const s of sites) {
        it('should block', () => {
            browser.url(s.url);
            expect(s.blockedIDOnLoad.isVisible()).toBe(true);
        });            
    }
});

谷歌测试通过,因为这是该页面上的有效ID。

enter image description here

答案 1 :(得分:0)

我认为您也可以使用this,如下所示

describe("test power", () => {

       function test(x){
       var result = x * x * x;
       it(`${x} in the power 3 is ${result}`, function() {
       assert.equal(pow(x, 3), result);
    });
       for (var x = 1; x <= 5; x++) {
    test(x);
  }  
}

});