Another core feature of Codecov is our processing and merging of coverage reports. That means we take in any number of reports and aggregate them together, so you can see your coverage data in one view. Let’s see what that looks like.
Before we continue, create a new branch
git checkout main git pull git checkout -b 'step4'
So far, we've only dealt with code in our
api/calculator folder. But what happens if there are multiple reports?
Create a new directory
mkdir api/smiles touch api/smiles/__init__.py
Create a new file
class Smiles: def smile(): return ":)" def frown(): return ":("
Now create a test file
from .smiles import Smiles def test_smile(): assert Smiles.smile() == ":)"
Let's add a test and coverage step for the
api/smiles directory. In your
.github/workflows/ci.yml file, replace the file with the below code
name: API workflow on: [push, pull_request] jobs: build: runs-on: ubuntu-latest name: Test python API steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v2 with: python-version: '3.11' - name: Install requirements run: pip install -r api/requirements.txt - name: Run tests and collect coverage for calculator run: pytest --cov=api.calculator --cov-report=xml:calculator-coverage.xml - name: Run tests and collect coverage for smiles run: pytest --cov=api.smiles --cov-report=xml:smiles-coverage.xml - name: Upload coverage reports to Codecov with GitHub Action uses: codecov/codecov-action@v3
We will now be producing two coverage reports
smiles-coverage.xml. Codecov will seamlessly merge those reports together. Create a pull request
git add . git commit -m 'step4: add smiles' git push origin step4
After CI/CD runs, let's take a look at the PR comment.
Notice that we have the two files
api/smiles/test_smiles.py in our Impacted Files list. Codecov will list out the files that have new or changed coverage here. In the next section, we will see how to filter coverage by directory using Codecov Components.
Updated about 1 month ago