# SWARD
Silent Ward, a fork which allows you to print less verbose testing output.
See: https://github.com/darrenburns/ward/issues/338
For this purpose run:
``
ward --hide-locals
``
### Installation:
```
pip install sward
```
<hr />
<img src="https://user-images.githubusercontent.com/5740731/119056107-085c6900-b9c2-11eb-9699-f54ef4945623.png" width="350px">
[](https://codecov.io/gh/darrenburns/ward)
[](https://ward.readthedocs.io/en/latest/?badge=latest)
[](https://badge.fury.io/py/ward)
<hr>
_Ward_ is a Python testing framework with a focus on productivity and readability. It gives you the tools you need to write **well-documented** and **scalable** tests.
<img alt="Ward typical test output example" src="https://user-images.githubusercontent.com/5740731/118399779-a795ff00-b656-11eb-8fca-4ceb03151f3e.png">
## Features
See the full set of features in the [**documentation**](https://ward.readthedocs.io).
**Descriptive test names:** describe what your tests do using strings, not function names.
```python
@test("simple addition") # you can use markdown in these descriptions!
def _():
assert 1 + 2 == 3 # you can use plain assert statements!
```
**Modular test dependencies:** manage test setup/teardown code using fixtures that rely on Python's import system, not
name matching.
```python
@fixture
def user():
return User(name="darren")
@test("the user is called darren")
def _(u=user):
assert u.name == "darren"
```
**Support for asyncio**: define your tests and fixtures with `async def` and call asynchronous code within them.
```python
@fixture
async def user():
u = await create_user()
return await u.login()
@test("the logged in user has a last session date")
async def _(user=user):
last_session = await get_last_session_date(user.id)
assert is_recent(last_session, get_last_session_date)
```
**Powerful test selection:** limit your test run not only by matching test names/descriptions, but also on the code
contained in the body of the test.
```
ward --search "Database.get_all_users"
```
Or use tag expressions for more powerful filtering.
```
ward --tags "(unit or integration) and not slow"
```
**Parameterised testing:** write a test once, and run it multiple times with different inputs by writing it in a loop.
```python
for lhs, rhs, res in [
(1, 1, 2),
(2, 3, 5),
]:
@test("simple addition")
def _(left=lhs, right=rhs, result=res):
assert left + right == result
```
**Cross platform:** Tested on Mac OS, Linux, and Windows.
**Speedy:** Ward's suite of ~320 tests run in less than half a second on my machine.
**Zero config:** Sensible defaults mean running `ward` with no arguments is enough to get started. Can be configured using `pyproject.toml` or the command line if required.
**Extendable:** Ward has a plugin system built with pluggy, the same framework used by pytest.
**Colourful, human readable output:** quickly pinpoint and fix issues with detailed output for failing tests.
<img alt="Ward failing test output example" src="https://user-images.githubusercontent.com/5740731/120125898-5dfaf780-c1b2-11eb-9acd-b9cd0ff24110.png">
## Getting Started
Have a look at the [**documentation**](https://ward.readthedocs.io)!
## How to Contribute
Contributions are very welcome and encouraged!
See the [contributing guide](.github/CONTRIBUTING.md) for information on how you can take part in the development of Ward.
Raw data
{
"_id": null,
"home_page": "https://ward.readthedocs.io",
"name": "sward",
"maintainer": "Darren Burns",
"docs_url": null,
"requires_python": "<4.0.0,>=3.7.8",
"maintainer_email": "darrenb900@gmail.com",
"keywords": "test, testing, quality-assurance, cli, python3",
"author": "Darren Burns",
"author_email": "darrenb900@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/fa/98/a3c5b336215468c692a42398b38bccb0a6fa89994564e8def29ae330c57e/sward-0.68.0b3.tar.gz",
"platform": null,
"description": "# SWARD\nSilent Ward, a fork which allows you to print less verbose testing output.\n\nSee: https://github.com/darrenburns/ward/issues/338\n\n\nFor this purpose run:\n\n``\n ward --hide-locals\n``\n\n### Installation:\n\n```\n pip install sward\n```\n\n\n<hr />\n\n<img src=\"https://user-images.githubusercontent.com/5740731/119056107-085c6900-b9c2-11eb-9699-f54ef4945623.png\" width=\"350px\">\n\n[](https://codecov.io/gh/darrenburns/ward)\n[](https://ward.readthedocs.io/en/latest/?badge=latest)\n[](https://badge.fury.io/py/ward)\n\n<hr>\n\n_Ward_ is a Python testing framework with a focus on productivity and readability. It gives you the tools you need to write **well-documented** and **scalable** tests.\n\n<img alt=\"Ward typical test output example\" src=\"https://user-images.githubusercontent.com/5740731/118399779-a795ff00-b656-11eb-8fca-4ceb03151f3e.png\">\n\n## Features\n\nSee the full set of features in the [**documentation**](https://ward.readthedocs.io).\n\n**Descriptive test names:** describe what your tests do using strings, not function names.\n```python\n@test(\"simple addition\") # you can use markdown in these descriptions!\ndef _():\n assert 1 + 2 == 3 # you can use plain assert statements!\n```\n\n**Modular test dependencies:** manage test setup/teardown code using fixtures that rely on Python's import system, not\nname matching.\n```python\n@fixture\ndef user():\n return User(name=\"darren\")\n\n\n@test(\"the user is called darren\")\ndef _(u=user):\n assert u.name == \"darren\"\n```\n\n**Support for asyncio**: define your tests and fixtures with `async def` and call asynchronous code within them.\n\n```python\n@fixture\nasync def user():\n u = await create_user()\n return await u.login()\n\n\n@test(\"the logged in user has a last session date\")\nasync def _(user=user):\n last_session = await get_last_session_date(user.id)\n assert is_recent(last_session, get_last_session_date)\n```\n\n**Powerful test selection:** limit your test run not only by matching test names/descriptions, but also on the code\ncontained in the body of the test.\n```\nward --search \"Database.get_all_users\"\n```\nOr use tag expressions for more powerful filtering.\n```\nward --tags \"(unit or integration) and not slow\"\n```\n\n**Parameterised testing:** write a test once, and run it multiple times with different inputs by writing it in a loop.\n```python\nfor lhs, rhs, res in [\n (1, 1, 2),\n (2, 3, 5),\n]:\n\n @test(\"simple addition\")\n def _(left=lhs, right=rhs, result=res):\n assert left + right == result\n```\n\n**Cross platform:** Tested on Mac OS, Linux, and Windows.\n\n**Speedy:** Ward's suite of ~320 tests run in less than half a second on my machine.\n\n**Zero config:** Sensible defaults mean running `ward` with no arguments is enough to get started. Can be configured using `pyproject.toml` or the command line if required.\n\n**Extendable:** Ward has a plugin system built with pluggy, the same framework used by pytest.\n\n**Colourful, human readable output:** quickly pinpoint and fix issues with detailed output for failing tests.\n\n<img alt=\"Ward failing test output example\" src=\"https://user-images.githubusercontent.com/5740731/120125898-5dfaf780-c1b2-11eb-9acd-b9cd0ff24110.png\">\n\n## Getting Started\n\nHave a look at the [**documentation**](https://ward.readthedocs.io)!\n\n## How to Contribute\n\nContributions are very welcome and encouraged!\n\nSee the [contributing guide](.github/CONTRIBUTING.md) for information on how you can take part in the development of Ward.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A modern Python testing framework",
"version": "0.68.0b3",
"project_urls": {
"Documentation": "https://ward.readthedocs.io",
"Homepage": "https://ward.readthedocs.io",
"Repository": "https://github.com/RamonGiovane/sward"
},
"split_keywords": [
"test",
" testing",
" quality-assurance",
" cli",
" python3"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "257c8b080f40c67e1375664176977dc1c4d76c2ebe2af2644d7eaaa1ae54f77b",
"md5": "08327fac151d41a5b3ef3b604a7bd574",
"sha256": "54c5c3214d5b7a0ea60044121672fbce1208b8617bf967ccc91676332f5de8eb"
},
"downloads": -1,
"filename": "sward-0.68.0b3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "08327fac151d41a5b3ef3b604a7bd574",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0.0,>=3.7.8",
"size": 43925,
"upload_time": "2025-07-28T19:23:12",
"upload_time_iso_8601": "2025-07-28T19:23:12.247677Z",
"url": "https://files.pythonhosted.org/packages/25/7c/8b080f40c67e1375664176977dc1c4d76c2ebe2af2644d7eaaa1ae54f77b/sward-0.68.0b3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "fa98a3c5b336215468c692a42398b38bccb0a6fa89994564e8def29ae330c57e",
"md5": "2c7b0e39171e5f803b4ed4c7cae5148f",
"sha256": "7f783bc1c8ee919534bcb27dfdf5d276697c235f013e07c97d91d4673e092fd6"
},
"downloads": -1,
"filename": "sward-0.68.0b3.tar.gz",
"has_sig": false,
"md5_digest": "2c7b0e39171e5f803b4ed4c7cae5148f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0.0,>=3.7.8",
"size": 39470,
"upload_time": "2025-07-28T19:23:13",
"upload_time_iso_8601": "2025-07-28T19:23:13.850671Z",
"url": "https://files.pythonhosted.org/packages/fa/98/a3c5b336215468c692a42398b38bccb0a6fa89994564e8def29ae330c57e/sward-0.68.0b3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-28 19:23:13",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "RamonGiovane",
"github_project": "sward",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "sward"
}