服务器启动后如何 运行 测试

How to run tests after server is up

正在尝试创建一个 GitLab-CI 配置,它应该会启动一个 Python 服务器,然后 运行 进行一些测试。

到目前为止,我已经成功获取了正确的图像并且服务器启动了。但是后来,脚本卡住了,我不知道如何跳到下一个。

我的gitlab-ci.yml

build:
  image: python:3.7.9
  stage: build
  before_script:
    - pip3 install -r requirements.txt
  script:
    - python3 server.py

test:
  script:
    - python3 -m unittest discover tests

所以,基本上是2个阶段; build 应该设置服务器并且 test 应该 运行 一些单元测试。我知道这 2 个作业是相互独立的 - 一旦阶段配置正确,我将更改它。

非常感谢任何意见!

为此,您必须 运行 您的服务器和您的测试在同一个作业中。执行此操作的常见方法是 'background' 您的服务器。我们通常通过在 bash 中以符号 &

结束一行来做到这一点

因此您的配置可能如下所示:

test:
  image: python:3.7.9
  before_script:
    - pip3 install -r requirements.txt
  script:
    - echo "starting the server"
    - python3 server.py &
    - sleep 1 # give the server a moment to start
    - python3 -m unittest discover tests

此外,您可能会考虑让您的测试套件设置测试服务器,以便将其全部封装在您的测试 运行 中。那么你根本不必担心这些事情是分开的步骤。

例如,许多 Python Web 框架都有自己的测试助手,它们会为您创建测试应用程序,作为 every 测试用例设置的一部分。这可能变得更加重要,例如,如果您的测试与数据库交互并且您需要隔离这些测试用例。

您可以 运行 通过测试容器在您的测试套件中进行集成测试。

https://github.com/testcontainers/testcontainers-python

这可能有点矫枉过正,首先我会建议 sytech

上面的答案