服务器启动后如何 运行 测试
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
上面的答案
正在尝试创建一个 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
上面的答案