服务器启动后如何运行测试
Posted
技术标签:
【中文标题】服务器启动后如何运行测试【英文标题】: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 应该运行一些单元测试。我知道这两个工作是相互独立的——一旦阶段配置正确,我就会改变它。
非常感谢任何输入!
【问题讨论】:
【参考方案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 框架都有自己的测试助手,它们会为您创建测试应用程序,作为 每个 测试用例设置的一部分。这可能变得更加重要,例如,如果您的测试与数据库交互并且您需要隔离这些测试用例。
【讨论】:
非常感谢,我现在要试试这个:)以上是关于服务器启动后如何运行测试的主要内容,如果未能解决你的问题,请参考以下文章
在使用 Springboot 运行集成测试时启动嵌入式 gRPC 服务器