我正在尝试使用别名在我before和beforeEach钩子之间共享值。如果我的值是字符串,则当前有效,但是当值是对象时,别名仅在第一个测试中定义,此后的每个测试this.user在我的beforeEach挂钩中均未定义。如何在测试之间共享作为对象的值?
这是我的代码:
before(function() {
const email = `test+${uuidv4()}@example.com`;
cy
.register(email)
.its("body.data.user")
.as("user");
});
beforeEach(function() {
console.log("this.user", this.user); // This is undefined in every test except the first
});
Run Code Online (Sandbox Code Playgroud)
别名变量通过cy.get('@user')或expect(user)语法访问。我了解这是因为某些命令本来就是异步的,因此使用包装器访问变量可确保在使用变量之前对其进行解析。
如果要访问全局user值,可以尝试类似的方法
let user;
before(function() {
const email = `test+${uuidv4()}@example.com`;
cy
.register(email)
.its("body.data.user")
.then(result => user = result);
});
beforeEach(function() {
console.log("global user", user);
});
Run Code Online (Sandbox Code Playgroud)
那里的then解决方案像一个诺言,但您应谨慎对待解决问题的延迟- console.log可能在之前运行then。
| 归档时间: |
|
| 查看次数: |
2526 次 |
| 最近记录: |