【问题标题】:How to run tests after server is up服务器启动后如何运行测试
【发布时间】:2021-12-25 12:56:54
【问题描述】:

尝试创建 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 应该运行一些单元测试。我知道这两个工作是相互独立的——一旦阶段配置正确,我就会改变它。

非常感谢任何输入!

【问题讨论】:

    标签: python gitlab gitlab-ci gitlab-ci-runner


    【解决方案1】:

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

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

    这可能有点矫枉过正,首先我会建议 sytech 上面的答案

    【讨论】:

      【解决方案2】:

      为了做到这一点,您必须在同一个作业中运行您的服务器和您的测试。这样做的一种常见方法是“后台”您的服务器。我们经常通过在 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 框架都有自己的测试助手,它们会为您创建测试应用程序,作为 每个 测试用例设置的一部分。这可能变得更加重要,例如,如果您的测试与数据库交互并且您需要隔离这些测试用例。

      【讨论】:

      • 非常感谢,我现在要试试这个:)
      猜你喜欢
      • 1970-01-01
      • 2018-09-24
      • 2018-01-14
      • 1970-01-01
      • 2019-07-15
      • 2016-05-02
      • 1970-01-01
      • 2021-09-11
      • 1970-01-01
      相关资源
      最近更新 更多