使用 Jenkinsfile 运行 Django 测试(docker)

Runing Django tests with Jenkinsfile (with docker)

我在 Docker 中有一个 Django 应用程序 运行ning(Postgres、Nginx 和 Jenkins 也在 docker 中), 我想通过创建管道 运行 进行测试

问题是每次我 运行 它用 python app/manage.py 测试(因为 jenkisnfile 在项目之外名为“app”的文件夹),它只是 运行 一个空的 test.py 文件(所以它 return 0 测试成功)即使我有实际测试。

如果我 运行 直接从终端测试就可以了

$ docker-compose run web python manage.py test
Creating proj1_web_run ... done
Creating test database for alias 'default'...
System check identified no issues (0 silenced).
..........
----------------------------------------------------------------------
Ran 10 tests in 0.229s

OK
Destroying test database for alias 'default'..

这里是 Jenkinsfile

      pipeline {
        agent {
            docker { image 'python:3.9' }
        }
        stages {
            stage('Build') {
                steps {
                    sh 'pip install -r requirements.txt'
                }
            }

            stage('Test') {
                steps {
                    sh 'python app/manage.py test'
                }
            }

            stage('Deploy') {
                steps {
                    sh 'echo not yet...'
                }
            }
        }
    }

Jenkins 控制台输出中的消息

+ python app/manage.py test
System check identified no issues (0 silenced).

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

非常感谢您的帮助

这与詹金斯或 docker 无关。 Django 测试运行程序搜索当前目录(如果是 python 包,则搜索子目录)。您可以先cd app,或者指定目录:

python app/manage.py test ./app