在gradle测试期间显示标准输出和错误仅适用于失败的测试

时间:2016-04-11 20:10:26

标签: testing gradle travis-ci

我有一个在travis-ci上运行的大型测试套件,它有一个文本输出。我想以一种只为失败的测试,标准输出和标准错误流显示的方式配置gradle。对于已正确执行的所有其他测试,不应发生这种情况,以免控制台受到噪音污染。

我知道如何启用或禁用标准输出/错误记录,但我不确定如何依赖测试结果。

2 个答案:

答案 0 :(得分:2)

可以使用以下gradle配置将其存档

project.test {
  def outputCache = new LinkedList<String>()

  beforeTest { TestDescriptor td -> outputCache.clear() }    // clear everything right before the test starts

  onOutput { TestDescriptor td, TestOutputEvent toe ->       // when output is coming put it in the cache
    outputCache.add(toe.getMessage())
    while (outputCache.size() > 1000) outputCache.remove() // if we have more than 1000 lines -> drop first
  }

  /** after test -> decide what to print */
  afterTest { TestDescriptor td, TestResult tr ->
    if (tr.resultType == TestResult.ResultType.FAILURE && outputCache.size() > 0) {
        println()
        println(" Output of ${td.className}.${td.name}:")
        outputCache.each { print(" > $it") }
    }
  }
}

Git回购:https://github.com/calliduslynx/gradle-log-on-failure

原始内容在这里:https://discuss.gradle.org/t/show-stderr-for-failed-tests/8463/7

答案 1 :(得分:1)

将以下配置块添加到您的 build.gradle 文件中:

lists = soup.find(class_="image-container image__pic js-image-pic")   
for img in lists:
       image = img.find('img')['src']
       print (image)

可以找到文档here