【问题标题】:Running unit tests inside Docker Container Django在 Docker Container Django 中运行单元测试
【发布时间】:2020-07-23 19:22:39
【问题描述】:

在构建过程中运行 django 单元测试用例的正确方法是什么?

我们使用 Jenkins 管道构建 docker 镜像,容器将通过启动脚本启动。

我需要在 nginx 容器启动之前调用 manage.py 测试吗? 或者 我是否需要在 Jenkins 构建管道中添加构建后任务以在容器启动后运行测试?

所以基本上是在寻找运行测试的最佳实践。我们需要在服务器启动之前还是在服务器启动之后运行单元测试?

我知道在我们启动 nginx 之前运行单元测试更有意义,但是随着将来添加更多 n 更多的测试用例,它不会增加时间吗?

【问题讨论】:

  • 我可能会在构建 Docker 映像之前运行单元测试。作为单元测试,它们不应该依赖于正在运行的服务器、数据库或其他外部要求。将 SQLite 用作仅用于测试的嵌入式数据库可能会有所帮助。
  • 您好@DavidMaze,我完全同意您的说法:单元测试、集成测试、e2e 测试等是完全不同的故事,但对于单元测试来说,您是否认为拥有专用图像有什么问题仅为运行时构建,在其中运行单元测试并根据结果将go/no-go 决定进入 CI 管道的下一步?这就是我在自己的一些管道中使用的方法

标签: django docker unit-testing jenkins jenkins-pipeline


【解决方案1】:

取决于您的测试用例。如果您只运行单元测试,则不需要。如果您在测试中做更多的事情,例如调用您的 api(功能测试等),一个好方法(在我看来)是在您的 jenkinsfile 中创建不同的阶段,您首先在其中构建 docker 映像,然后运行单元测试,然后根据测试结果决定做什么。我认为这是一件好事,因为您将在同一容器(相同条件)内对您的应用程序运行测试,它将在生产环境中运行。另一个好的做法是向 Jenkins 添加一些插件并有一些报告(即覆盖率)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-11
    • 2023-03-21
    • 2013-02-19
    • 2020-04-22
    • 1970-01-01
    • 2015-12-01
    • 2017-10-30
    • 1970-01-01
    相关资源
    最近更新 更多