使用夜巡 - 是否可以将测试变量传递到之前每个?



我有一个 beforeEach 函数,用于创建预订,以便我的测试可以批准它。它工作正常,但我想对每种不同类型的预订进行测试,例如来自美国和澳大利亚的预订。

这就是我的代码现在的样子(简化示例(

module.exports = {
beforeEach: async function (browser, done) {
const bookingId = await createBooking('US') //assume this exists and creates the booking based on passed in country
browser.globals.currentBookingId = bookingId
done()
},
'User can approve a US booking': function (browser) {
const bookingId = browser.globals.currentBookingId
const bookingPage = browser.page['bookings']()
bookingPage.navigate(bookingId)
//approve booking
browser.end()
}
}

问题是,如果我想添加另一个测试,用户可以批准 AU 预订,有没有办法重复使用之前每个代码与不同的输入变量?

另外,有没有办法从之前每个返回预订ID?我不确定在全局变量中设置它是否是最好的方法。

最初我没有使用之前Each,我只是将createBooking步骤放在测试本身中,但它是异步的,似乎不允许使用测试功能?

好的,我已经考虑了一个可能的解决方案。我可以在开始时在 before 函数中设置所有预订,即

module.exports = {
before: async function (browser, done) {
const countries = ["US", "AU"]
for (let country of countries){
browser.globals.bookingIds[country] = await createBooking(country)
}
done()
},
'User can approve a US booking': function (browser) {
const bookingId = browser.globals.bookingIds.US
const bookingPage = browser.page['bookings']()
bookingPage.navigate(bookingId)
//approve booking
browser.end()
},
'User can approve a AU booking': function (browser) {
const bookingId = browser.globals.bookingIds.AU
const bookingPage = browser.page['bookings']()
bookingPage.navigate(bookingId)
//approve booking
browser.end()
}
}

最新更新