A pytest plugin for testing and scoring programming assignments.
- Assignment Scoring
- Add point values to test functions using the
@points(n)decorator - Show a score summary when running
pytest --score
- Add point values to test functions using the
- Test Locking as described in Basu et al., Automated Problem Clarification at Scale (abstract, pdf)
- Lock doctests using the
# LOCKcomment before the function. python3 pytest-grader --lock [src] [dest]will generate a copy of src with doctests locked.pytest --unlockprovides an interactive interface for unlocking locked doctests.
- Lock doctests using the
- Progress Logging
- Snapshots of assignment files, test case results, and unlocking attempts are stored in a
grader.sqlite. - This file is designed to be submitted along with the assignment as a record of how the assignment was completed.
- Snapshots of assignment files, test case results, and unlocking attempts are stored in a
Include a conftest.py file in the distribution of your assignment that contains pytest_plugins = ["pytest_grader"].
See the examples directory for more usage info.
A permissive license will be chosen shortly...
- Change version in
pyproject.toml python -m buildpython -m twine upload dist/*