Github 操作 Pytest 失败过程并将其保存到 txt 文件

Github Actions Pytest fail process along with saving it to txt file

我正在尝试设置工作流程,运行s 测试和评论测试覆盖率。为此,我需要将 pytest 调用结果保存到 txt 文件中。但是,通过使用以下命令执行此操作:

Run pytest --cov=./ --junitxml=pytest.xml --capture=tee-sys --cov-report=term-missing:skip-covered tests/test_app.py | tee pytest-coverage.txt

我 运行 遇到了一个问题,如果某些测试失败,整个工作流程无论如何都会完成。如果任何测试失败,我想要的是工作流程失败,否则我将使用 pytest-coverage.txt 打印代码覆盖率。

您可能需要设置 pipefail:

If set, the return value of a pipeline is the value of the last (rightmost) > command to exit with a non-zero status, or zero if all commands in the pipeline exit successfully. This option is disabled by default.

所以工作流程步骤应该是:

run: |
  set -o pipefail
  pytest --cov=./ \
         --junitxml=pytest.xml \
         --capture=tee-sys \
         --cov-report=term-missing:skip-covered \
         tests/test_app.py | \
  tee pytest-coverage.txt

备注:

  • 在云跑步者中这不是必需的,但在 self-hosted 跑步者中似乎是 issue
  • 或者也可以通过修改job defaults中的shell来设置。