A collection of generic tests for grading programming assignments.
This project is still in very early development. Expect breaking changes.
pip install generic-grader
Name the reference solution reference.py
, and place it in a tests
subdirectory of the directory containing the student's code.
Add a configuration file for the assignment in the tests
subdirectory (e.g.
tests/config.py
). It might look something like this:
from parameterized import param
from generic_grader.style import comments # Import the tests you want to use
from generic_grader.utils.options import Options
# Create tests by calling each test type's build method.
# They should all start with the word `test_` to be discovered by unittest.
# Adding a number after `test_` can be used to control the run order.
# The argument is a list of `param` objects, each with an `Options` object.
# See the Options class for more information on the available options.
test_01_TestCommentLength = comments.build(
[
param(
Options(
sub_module="hello_user",
hint="Check the volume of comments in your code.",
entries=("Tim the Enchanter",),
),
),
param(
Options(
sub_module="hello_user",
hint="Check the volume of comments in your code.",
entries=("King Arthur",),
),
),
]
)
Run the tests.
python -m unittest tests/config.py
Clone the repo onto your machine.
HTTPS
git clone https://github.com/Purdue-EBEC/generic-grader.git
SSH
git clone git@github.com:Purdue-EBEC/generic-grader.git
Set up a new virtual environment in the cloned repo.
cd generic-grader
python3.12 -m venv .env3.12
Activate the virtual environment. If you are using VS Code, there may be a pop-up to do this automatically when working from this directory.
Linux/macOS
source .env3.12/bin/activate
Windows
.env3.12\Scripts\activate
Install tesseract-ocr
on Linux
sudo apt install tesseract-ocr
on macOS
brew install tesseract
on Windows, download the latest installers from https://github.com/UB-Mannheim/tesseract/wiki
Install ghostscript
on Linux
sudo apt install ghostscript
on macOS
brew install ghostscript
on Windows, download the latest installers from https://ghostscript.com/releases/gsdnld.html
Install the package. Note that this installs the package as editable, so edits will be automatically reflected in the installed package.
pip install -e .[dev]
Install the pre-commit hooks.
pre-commit install
Run the tests.
pytest
Make changes ...
Deactivate the virtual environment.
deactivate