我的测试在通过网络界面控制的物联网设备上运行。我想创建一个恢复出厂设置测试,其中涉及设备的重新启动,并且我想循环检查设备是否再次在线(“可 ping”)。有没有办法在Cypress内部执行ping命令并获取其返回值。
假设您指的是标准 ping 协议,这就是形式。替换您的设备地址并回复消息。
cy.exec('ping google.com', {failOnNonZeroExit: false})
.then(reply => {
expect(reply.code).to.eq(0)
const expectedMsg = 'Pinging google.com [142.250.66.206] with 32 bytes of data:\r\nReply from 142.250.66.206: bytes=32'
expect(reply.stdout).to.satisfy(msg => msg.startsWith(expectedMsg))
})
可能不需要循环,但如果需要的话我会使用递归函数
function doPing(count = 0) {
if (count === 10) throw 'Failed to ping';
cy.exec('ping google.com', {failOnNonZeroExit: false})
.then(reply => {
if (reply.code > 0) {
cy.wait(1000) // whatever back-off time is required
doPing(++count)
} else {
expect(reply.stdout).to.satisfy(msg => ...)
}
})
}
doPing()