我有一些可以在本地运行的代码,使用Supertest进行了测试,但是当相同的测试在CircleCI上运行时,由于超时而失败。
有问题的代码是
for (const id of ids) {
const urls = await scrapeLinks(id) // invokes puppeteer on a dockerised mock server
await connectUrls(fbId, urls) // updates database using sequelize
}
在本地运行可以正常工作。
在CircleCI上运行相同的测试,此代码需要很长时间才能完成,并且测试超时。
但是但是,如果我添加几条console.log
行,则测试不会超时
for (const id of ids) {
console.log('start', id)
const urls = await scrapeLinks(id) // invokes puppeteer on a dockerised mock server
console.log('urls', urls)
await connectUrls(fbId, urls) // updates database using sequelize
console.log('end', id)
}
在本地和CircleCI上运行都能正常运行的测试。
我的简单解决方法当然是将测试的超时时间从2秒延长到5秒。
但是我的问题是,为什么在每个步骤之后添加console.log
行,会使代码更快地完成?
答案 0 :(得分:0)
这很可能是由于CircleCI的no_output_timeout
属性所定义的:
该命令可以在没有输出的情况下运行的时间。字符串是带有单位后缀的十进制,例如“ 20m”,“ 1.25h”,“ 5s”(默认值:10分钟)
因此,如果您的程序超过了此属性设置的给定时间而不提供输出,则程序将超时。