我正在测试一个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次通过测试。我可以看到浏览器加载每个不同的页面并被阻止。但是,如果未阻止任何页面,则所有测试都将失败。我想针对许多网站运行此测试(一些被阻止,一些没有)。在自动化测试方面,我是初学者,我非常感谢您提供的任何指导/知识。有没有办法用我当前的框架实现这个测试,还是有更好的方法?
答案 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。
答案 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);
}
}
});