4 ms·
Modern Python CI with Coverage in 2025
- dnouri 11mo agoI covered a gap by blogging about: Modern Python CI with Coverage in #2025 Let me know in the comments if you think it's useful. From the table of contents: Our toolchain py-cov-action: GitHub-native coverage The two-workflow pattern for fork PRs pytest-xdist: Parallel testing by default uv: Fast package management Six critical gotchas Gotcha #1: Using coverage run -m pytest with xdist Gotcha #2: Missing relative_files = true Gotcha #3: Hidden files excluded from artifacts Gotcha #4: Fork PRs can't post comments Gotcha #5: Missing pytest-cov plugin Gotcha #6: E2E tests with subprocesses contribute 0% coverage Complete working example .github/workflows/ci.yml .github/workflows/post-coverage-comment.yml pyproject.toml configuration Verifying your setup Check relative paths Verify artifact upload Test fork PR comments What success looks like Migration notes From Codecov/Coveralls From pip to uv Next steps Resources
- turtleyacht 11mo agoWhich packages or Actions would be used for mutation testing?
- dnouri 11mo agoInteresting question. However, I haven't worked with those kinds of tests before. It looks like there's two pytest plugins at least to support you with that: - Mutatest: Python mutation testing: https://mutatest.readthedocs.io/ https://mutatest.readthedocs.io/ - Mutagen: https://github.com/timpaquatte/pytest-mutagen https://github.com/timpaquatte/pytest-mutagen Let me know how it goes.