我正在尝试使用操作在 github 中设置继续集成。我设置了一个动作来自动获取代码覆盖率,这部分效果很好,但是它正在计算我的 src 目录中每个文件的代码覆盖率,这不是首选,我希望它只计算修改过的文件的代码覆盖率,我怎么做?
name: Pytest Coverage
on:
pull_request:
branches: [ main, dev ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.10
uses: actions/setup-python@v2
with:
python-version: "3.10"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install flake8 pytest pytest-cov
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- name: Changed Files Exporter
id: files
uses: umani/changed-files@v3.3.0
with:
repo-token: ${{ github.token }}
pattern: '^src.*\.(py)$'
result-encoding: 'string'
- name: Build coverage file
run: |
echo "${{ steps.files.outputs.files_updated }} ${{ steps.files.outputs.files_created }}"
pytest --cache-clear --cov-branch --cov=src > pytest-coverage.txt
- name: Comment coverage
uses: coroo/pytest-coverage-commentator@v1.0.2
- name: Get Coverage %
run: |
LAST_LINE=$(tail -4 pytest-coverage.txt)
LAST_LINE=$(head -n 1 <<< "$LAST_LINE")
COVERAGE=$(sed 's/.*[[:space:]]\([0-9]\+\)%/\1/' <<< "$LAST_LINE")
echo "Overall code coverage is $COVERAGE"
echo 'SCORE<<EOF' >> $GITHUB_ENV
echo "$SCORE" >> $GITHUB_ENV
echo 'EOF' >> $GITHUB_ENV
重要的两行在这里:
echo "${{ steps.files.outputs.files_updated }} ${{ steps.files.outputs.files_created }}"
pytest --cache-clear --cov-branch --cov=src > pytest-coverage.txt
echo 打印出正确的文件:
src/scripts/testing_script.py src/server.py
如何更改此行,使其仅计算 2 个已修改文件的总覆盖率?
pytest --cache-clear --cov-branch --cov=src > pytest-coverage.txt