我有一个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()
}
}
问题是,是否要添加另一个测试,用户可以批准非公开预订,有什么方法可以将重用代码分别与不同的输入变量一起使用?
还有什么方法可以从beforeEach中返回bookingId?我不确定是否将其设置为全局变量是最好的方法。
最初我不是在使用beforeEach,而是将createBooking步骤放入测试本身,但它是异步的,似乎不允许使用测试功能?
答案 0 :(得分:0)
好吧,我考虑了一个可能的解决方案。我可以在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()
}
}