0

我正在尝试使用操作在 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
4

0 回答 0