django - Jenkins JUnit 插件给出错误 "ERROR: No test report files were found. Configuration error?"

标签 django jenkins junit xunit

我在 Kubernetes 集群中运行了 Jenkins 主容器。我有一个单独的 VM 配置为构建从属设备,以便它可以构建容器。

我正在使用 Multibranch Pipeline使用 git repo 中的 Jenkinsfile。

管道构建 Docker 镜像,它是一个 Django 应用程序。我已经安装了 django_nose,所以它可以生成带有测试结果的 xunit 文件。

Django 设置有以下选项来启用 xunit 测试结果。

TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
NOSE_ARGS = [
    '--with-xunit',
    '--xunit-file=/tmp/tests/results/results.xml',
] 

在管道中,我有以下阶段:
stage("Test") {
    sh("docker run --rm -i \
        -v '${env.WORKSPACE}/tests/results/':/tmp/tests/results \
        ${image} python3 manage.py test")
    junit '${env.WORKSPACE}/tests/results/*.xml'
}

它是在 Jenkins 工作区中挂载一个目录作为容器中的一个卷,以便在容器完成后 Jenkins 可以查看保存的测试结果。

当我运行构建时,出现以下错误:
[Pipeline] { (Test)
[Pipeline] sh
[my_project-test-7T6G6Z...QQBYGFA] Running shell script
+ docker run --rm -i -v /home/jenkins/jenkins_home/workspace/my_project-test-7T6G6Z...QQBYGFA/tests/results/:/tmp/tests/results my-registry/username/my_project python3 manage.py test
nosetests --with-xunit --xunit-file=/tmp/tests/results/results.xml --verbosity=1
Creating test database for alias 'default'...
............
----------------------------------------------------------------------
Ran 12 tests in 1.421s

OK
Destroying test database for alias 'default'...
[Pipeline] junit
Recording test results
No test report files were found. Configuration error?
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline

我可以看到 Django 测试正在运行并通过。如果我查看 Jenkins 从虚拟机,我可以看到 results.xml 文件位于它应该位于的位置,并且它包含测试的 XML 结果。
jenkins@jenkins-slave01:~/jenkins_home/workspace$ ls -al /home/jenkins/jenkins_home/workspace/my_project-test-7T6G6Z...QQBYGFA/tests/results/results.xml
-rw-r--r-- 1 root root 1329 Oct  2 09:45 /home/jenkins/jenkins_home/workspace/my_project-test-7T6G6Z...QQBYGFA/tests/results/results.xml
jenkins@jenkins-slave01:~/jenkins_home/workspace$

为什么Jenkins无法得到测试结果,因为我可以看到文件已创建?

最佳答案

我想出了答案。 JUnit 需要工作空间内的相对路径。您不需要包含工作区的路径。

junit 'tests/results/*.xml'

关于django - Jenkins JUnit 插件给出错误 "ERROR: No test report files were found. Configuration error?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52613692/

相关文章:

jenkins - CVS 结帐,无需所有额外文件夹

java - 如何使用 JUnit 在 Java 中测试具有 boolean 返回类型的方法

python - 在 django 模板中呈现 HTML(不是 unicode 而是 ASCII)

python - 如何从 django 的子目录中打开终端

Django 不会为 csrftoken cookie 设置 HttpOnly

xcode - 选择要在 Jenkins 中构建的分支

Jenkins - 更改主人的 ip

java - 完全不相关的代码行出现断言错误 - 学校项目的 Junit 测试

java - 单元测试的包装类

python - 如何在不刷新页面的情况下渲染存储在外部模型中的一段数据?