======
Virtue
======
|PyPI| |Pythons| |CI| |ReadTheDocs| |Precommit|
.. |PyPI| image:: https://img.shields.io/pypi/v/Virtue.svg
:alt: PyPI version
:target: https://pypi.org/project/Virtue/
.. |Pythons| image:: https://img.shields.io/pypi/pyversions/Virtue.svg
:alt: Supported Python versions
:target: https://pypi.org/project/Virtue/
.. |CI| image:: https://github.com/Julian/Virtue/workflows/CI/badge.svg
:alt: Build status
:target: https://github.com/Julian/Virtue/actions?query=workflow%3ACI
.. |ReadTheDocs| image:: https://readthedocs.org/projects/virtue/badge/?version=stable&style=flat
:alt: ReadTheDocs status
:target: https://virtue.readthedocs.io/en/stable/
.. |Precommit| image:: https://results.pre-commit.ci/badge/github/Julian/Virtue/main.svg
:alt: pre-commit.ci status
:target: https://results.pre-commit.ci/latest/github/Julian/Virtue/main
``virtue`` is a modern, extensible,
`unittest <https://docs.python.org/3/library/unittest.html>`_ compliant
test runner.
It is *not* a test framework (it doesn't contain a ``TestCase`` subclass
and it never will).
Usage
-----
Running a ``unittest``-based suite works essentially as it does for
``twisted``'s ``trial``, i.e.::
$ python -m virtue mypackage.tests
will run the tests subpackage of a given importable package.
More docs are coming. Sorry.
Contributing
------------
I'm Julian Berman.
``virtue`` is on `GitHub <http://github.com/Julian/Virtue>`_.
Get in touch, via GitHub or otherwise, if you've got something to contribute,
it'd be most welcome!
You can also generally find me on Libera (nick: ``Julian``) in various
channels, including ``#python``.
If you feel overwhelmingly grateful, you can also `sponsor me
<https://github.com/sponsors/Julian/>`_.
Raw data
{
"_id": null,
"home_page": "",
"name": "virtue",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "test runner,testing,tests,unittest",
"author": "Julian Berman",
"author_email": "Julian+Virtue@GrayVines.com",
"download_url": "https://files.pythonhosted.org/packages/ef/43/eb79da2654d5c02503a843afd7e01e2625602e6c84446fd81198360ca287/virtue-2023.8.2.tar.gz",
"platform": null,
"description": "======\nVirtue\n======\n\n|PyPI| |Pythons| |CI| |ReadTheDocs| |Precommit|\n\n.. |PyPI| image:: https://img.shields.io/pypi/v/Virtue.svg\n :alt: PyPI version\n :target: https://pypi.org/project/Virtue/\n\n.. |Pythons| image:: https://img.shields.io/pypi/pyversions/Virtue.svg\n :alt: Supported Python versions\n :target: https://pypi.org/project/Virtue/\n\n.. |CI| image:: https://github.com/Julian/Virtue/workflows/CI/badge.svg\n :alt: Build status\n :target: https://github.com/Julian/Virtue/actions?query=workflow%3ACI\n\n.. |ReadTheDocs| image:: https://readthedocs.org/projects/virtue/badge/?version=stable&style=flat\n :alt: ReadTheDocs status\n :target: https://virtue.readthedocs.io/en/stable/\n\n.. |Precommit| image:: https://results.pre-commit.ci/badge/github/Julian/Virtue/main.svg\n :alt: pre-commit.ci status\n :target: https://results.pre-commit.ci/latest/github/Julian/Virtue/main\n\n\n``virtue`` is a modern, extensible,\n`unittest <https://docs.python.org/3/library/unittest.html>`_ compliant\ntest runner.\n\nIt is *not* a test framework (it doesn't contain a ``TestCase`` subclass\nand it never will).\n\nUsage\n-----\n\nRunning a ``unittest``-based suite works essentially as it does for\n``twisted``'s ``trial``, i.e.::\n\n $ python -m virtue mypackage.tests\n\nwill run the tests subpackage of a given importable package.\n\nMore docs are coming. Sorry.\n\n\nContributing\n------------\n\nI'm Julian Berman.\n\n``virtue`` is on `GitHub <http://github.com/Julian/Virtue>`_.\n\nGet in touch, via GitHub or otherwise, if you've got something to contribute,\nit'd be most welcome!\n\nYou can also generally find me on Libera (nick: ``Julian``) in various\nchannels, including ``#python``.\n\nIf you feel overwhelmingly grateful, you can also `sponsor me\n<https://github.com/sponsors/Julian/>`_.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "After trial comes virtue. A test runner for good.",
"version": "2023.8.2",
"project_urls": {
"Documentation": "https://virtue.readthedocs.io/",
"Funding": "https://github.com/sponsors/Julian",
"Homepage": "https://github.com/Julian/Virtue",
"Issues": "https://github.com/Julian/Virtue/issues/",
"Source": "https://github.com/Julian/Virtue"
},
"split_keywords": [
"test runner",
"testing",
"tests",
"unittest"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "91d864bed6650e2ab8e510e52fe82b5471e12d9e6bb100c6710dcd9ff5c5ebd4",
"md5": "6501c78f46d3767ef5713d6c9d7b512e",
"sha256": "671ef49ab33de583c6108da5249546460b3042732deb1e44554c8291b3efd534"
},
"downloads": -1,
"filename": "virtue-2023.8.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6501c78f46d3767ef5713d6c9d7b512e",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 22770,
"upload_time": "2023-08-22T09:25:53",
"upload_time_iso_8601": "2023-08-22T09:25:53.871960Z",
"url": "https://files.pythonhosted.org/packages/91/d8/64bed6650e2ab8e510e52fe82b5471e12d9e6bb100c6710dcd9ff5c5ebd4/virtue-2023.8.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "ef43eb79da2654d5c02503a843afd7e01e2625602e6c84446fd81198360ca287",
"md5": "356b61a89075b99c4478e75bf959cba9",
"sha256": "8ced7dd508d187897c49de18760c91a211ac7787d579d372a51a607e8c207c8e"
},
"downloads": -1,
"filename": "virtue-2023.8.2.tar.gz",
"has_sig": false,
"md5_digest": "356b61a89075b99c4478e75bf959cba9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 20783,
"upload_time": "2023-08-22T09:25:55",
"upload_time_iso_8601": "2023-08-22T09:25:55.525140Z",
"url": "https://files.pythonhosted.org/packages/ef/43/eb79da2654d5c02503a843afd7e01e2625602e6c84446fd81198360ca287/virtue-2023.8.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-08-22 09:25:55",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "sponsors",
"github_project": "Julian",
"github_not_found": true,
"lcname": "virtue"
}