我在 github 中有一个 python 项目,我希望每次推送时,github 都会显示该项目的覆盖范围。那可能吗?我需要什么工具?当我以前使用java时,jacoco解决了这个问题,但在python中我不知道我可以使用什么工具。 我的 .github/workflows/github-actions.yaml 是:
name: Python CI
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install -r requirements.txt
- name: Test with pytest
run: |
pip install pytest pytest-cov
pytest tests/
有什么建议吗?
这绝对是可能的。可能的解决方案之一是使用提供您所需功能的codecov.io服务。
为此,您需要执行以下步骤:
首先,您需要在 codecov.io 服务中创建一个帐户,然后通过个人资料图片 -> 设置 -> 设置标签 -> 访问窗格 -> “生成令牌”按钮获取 API 令牌。
为令牌命名,然后单击另一个“生成令牌”按钮。
最后,复制您的令牌。
一旦获得令牌,您需要将其安全地提供给 CI/CD 管道。为此,您需要访问存储库的设置页面,导航到“秘密和变量”->“操作”,然后选择“新存储库秘密”。如果您打算将一个令牌用于组织中的多个存储库,您可以考虑添加组织范围的机密。
设置名称,我个人更喜欢“CODECOV_TOKEN”,然后粘贴您在上一步中获得的令牌。
最后,您需要修改 github 操作才能开始将覆盖率报告上传到 codecov.io。
- name: Test with pytest
run: |
pip install pytest pytest-cov
pytest --cov=./ --cov-report=xml tests/
注意:向
--cov=./ --cov-report=xml
命令添加 pytest
参数,以便指示 pytest-cov
库收集覆盖范围并以 xml 格式提供。
- name: Collect coverage
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
files: ./coverage.xml
verbose: true
这是 Codecov 服务的官方 Github 操作。它应该是一个很好的基线,可以让您检查它是如何工作的。
注意:
token: ${{ secrets.CODECOV_TOKEN }}
您需要提供令牌,因此如果您给它另一个名称,它可能会有所不同。
我希望这可以帮助您完成所有设置。我鼓励您阅读有关 codecov 提供的配置选项的更多信息,以便调整集成。