cy.exec 后台进程超时
cy.exec timeout with backgrounded process
我正在尝试使用 cy.exec
启动服务器并像这样在后台运行该进程:
cy.exec('nohup python -m my_module arg_1 &', { failOnNonZeroExit: false }).then(result => {
if (result.code != 0) {
throw new Error(`Execution of "${command}" failed
Exit code: ${result.code}
Stdout:\n${result.stdout}
Stderr:\n${result.stderr}`);
}
})
然而,这会导致超时错误,就好像进程在前台 运行 一样。我意识到用 cy.exec
启动服务器是一种反模式,但我有一个非常特殊的情况,我需要为每个测试启动一个具有不同参数的服务器。
我认为通过后台处理我可以绕过 cy.exec
.
的超时要求
如果这不是一个选项,那么对于这种情况的最佳实践是什么,即每个 cypress 测试启动不同的服务器?
您可以尝试使用 cypress 任务而不是“cy.exce”
例子
在你的 cypress/plugins/index.js
const startServer = async function (ExecuteCommandWithPath) {
exec(ExecuteCommandWithPath,
(error, stdout, stderr) => {
console.log(stdout);
console.log(stderr);
if (error !== null) {
console.log(`exec error: ${error}`);
return false;
}
return true;
});
};
module.exports = ( on, config ) => {
on("task", {
PythonServerStatUp(ExecuteCommandWithPath) {
return new Promise((resolve, reject) => {
startServer(ExecuteCommandWithPath);
resolve(false);
});
},
});
}
我正在尝试使用 cy.exec
启动服务器并像这样在后台运行该进程:
cy.exec('nohup python -m my_module arg_1 &', { failOnNonZeroExit: false }).then(result => {
if (result.code != 0) {
throw new Error(`Execution of "${command}" failed
Exit code: ${result.code}
Stdout:\n${result.stdout}
Stderr:\n${result.stderr}`);
}
})
然而,这会导致超时错误,就好像进程在前台 运行 一样。我意识到用 cy.exec
启动服务器是一种反模式,但我有一个非常特殊的情况,我需要为每个测试启动一个具有不同参数的服务器。
我认为通过后台处理我可以绕过 cy.exec
.
如果这不是一个选项,那么对于这种情况的最佳实践是什么,即每个 cypress 测试启动不同的服务器?
您可以尝试使用 cypress 任务而不是“cy.exce”
例子 在你的 cypress/plugins/index.js
const startServer = async function (ExecuteCommandWithPath) {
exec(ExecuteCommandWithPath,
(error, stdout, stderr) => {
console.log(stdout);
console.log(stderr);
if (error !== null) {
console.log(`exec error: ${error}`);
return false;
}
return true;
});
};
module.exports = ( on, config ) => {
on("task", {
PythonServerStatUp(ExecuteCommandWithPath) {
return new Promise((resolve, reject) => {
startServer(ExecuteCommandWithPath);
resolve(false);
});
},
});
}