Skip to main content

A collection of parameterizable tests for automatic grading.

Project description

Generic Grader

A collection of generic tests for grading programming assignments.

This project is still in very early development. Expect breaking changes.

Installation

pip install generic-grader

Usage

  1. Name the reference solution reference.py, and place it in a tests subdirectory of the directory containing the student's code.

  2. 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",),
              ),
          ),
       ]
    )
    
  3. Run the tests.

    python -m unittest tests/config.py
    

Contributing

  1. 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
      
  2. Set up a new virtual environment in the cloned repo.

    cd generic-grader
    python3.12 -m venv .env3.12
    
  3. 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
      
  4. Install tesseract-ocr

  5. Install ghostscript

  6. 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]
    
  7. Install the pre-commit hooks.

    pre-commit install
    
  8. Run the tests.

    pytest
    
  9. Make changes ...

  10. Deactivate the virtual environment.

deactivate

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

generic_grader-0.1.20.tar.gz (44.9 kB view details)

Uploaded Source

Built Distribution

generic_grader-0.1.20-py3-none-any.whl (67.9 kB view details)

Uploaded Python 3

File details

Details for the file generic_grader-0.1.20.tar.gz.

File metadata

  • Download URL: generic_grader-0.1.20.tar.gz
  • Upload date:
  • Size: 44.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for generic_grader-0.1.20.tar.gz
Algorithm Hash digest
SHA256 a9345463d413764c5ee13d7bec91747e73728d80de977c801feb3bba1bcd2d71
MD5 a44b6bc2a9fc9d0ec27421b538aee9bf
BLAKE2b-256 5068022c116cbda2ba38d1509aa12ed8b37d7fd3aa72282a97ce05b68ad0a37f

See more details on using hashes here.

File details

Details for the file generic_grader-0.1.20-py3-none-any.whl.

File metadata

File hashes

Hashes for generic_grader-0.1.20-py3-none-any.whl
Algorithm Hash digest
SHA256 545673fecc1c5703335deebbadeb1ffd748275e673d7c02cb8b7cf5225f61e9f
MD5 12b861339ac3e7384e353a0d4b4773b4
BLAKE2b-256 3ac1257c9c5501b7121df59ec5191b064920e2db059b31384adb600214a2838f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page