我正在使用量角器5编写一些e2e测试。我想要实现的是执行整个测试,共享设置和特定设置(用于测试组)。
我收到了以下代码:
Base.ts:
beforeAll(() => {
console.log("before all base");
});
beforeEach(()=> {
console.log("before each base");
});
afterEach(() => {
console.log("after each base")
});
afterAll(() => {
console.log("after all base");
});
TestSuite1.ts:
require('./Base');
describe("test suite 1", () => {
beforeAll(() => {
console.log("before all 1");
});
beforeEach(()=> {
console.log("before each 1");
});
afterEach(() => {
console.log("after each 1")
});
afterAll(() => {
console.log("after all 1");
});
it("test 1", () => {
console.log("test 1 1");
});
it("test 2", () => {
console.log("test 1 2");
});
});
TestSuite2.ts:
require('./Base');
describe("test suite 2", () => {
it("test 1", () => {
console.log("test 2 1");
});
it("test 2", () => {
console.log("test 2 2");
});
});
和conf.ts:
var testsTimeout = 3600000;
export let config: Config = {
framework: 'jasmine',
capabilities: {
browserName: 'chrome'
},
specs: ['test/TestSuite1.js', 'test/TestSuite2.js'],
seleniumAddress: 'http://localhost:4444/wd/hub',
noGlobals: true,
allScriptsTimeout: testsTimeout
};
我想得到以下输出:
before all base
before each base
before all 1
before each 1
test 1 1
after each 1
before each 1
test 1 2
after each 1
after all 1
after each base
before each base
test 2 1
test 2 2
after each base
after all base
Unfornatelly我的before/after all
和before/after each
组合在一起,打印如下:
before all base
before all 1
before each base
before each 1
test 1 1
after each 1
after each base
.before each base
before each 1
test 1 2
after each 1
after each base
.after all 1
before each base
test 2 1
after each base
.before each base
test 2 2
after each base
.after all base
是否有可能获得我期望的执行流程?
答案 0 :(得分:1)
我想这就是Protractor的设计工作原理。提出了一个问题,以跟踪beforeAll()
在父级描述块中的任何beforeEach()
之前运行的情况
检查完整的discussion here。
使用当前的实现(如果我理解正确),它只是 有一个单一的beforeAll真的很有意义,这应该是 在任何描述块之外,或在最外层的顶部 描述块。也就是说,在我的第二次之前没有任何意义 位于它的位置。
答案 1 :(得分:1)
这是可能的,您的功能将在套件中的所有内容之前/之后执行。
想法是将beforeAll()
afterAll()
或beforeEach()
afterEach()
放入量角器的配置文件中 - 放入onPrepare()
部分。
这可能如下所示:
module.exports.config = {
//somewhere in your config
onPrepare: function () {
beforeEach(function () {
//This will be executed before EVERY 'it' in each specfile
})
beforeAll(function () {
//This will be executed before EVERY 'describe' in each specfile (even before nested describes)
})
}
}
同时检查量角器配置中的其他选项:onComplete()
afterLaunch()
- 它们可能更适合您而不是茉莉花功能
你可能想看看jasmine记者,以防你需要以某种方式使用测试名称,测试结果,套件结果,并且可能是功能之前/之后的良好替代品。它们很容易创建和使用,请查看: