Name | TestSlide JSON |
Version |
2.7.1
JSON |
| download |
home_page | https://github.com/facebook/TestSlide |
Summary | A test framework for Python that makes mocking and iterating over code with tests a breeze |
upload_time | 2023-03-16 14:09:41 |
maintainer | Fabio Pugliese Ornellas |
docs_url | None |
author | |
requires_python | |
license | MIT |
keywords |
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
|
![TestSlide](./docs/testslide_logo.png)
[![Build Status](https://github.com/facebook/TestSlide/workflows/CI/badge.svg)](https://github.com/facebook/TestSlide/actions?query=workflow%3ACI)
[![Coverage Status](https://coveralls.io/repos/github/facebook/TestSlide/badge.svg?branch=main)](https://coveralls.io/github/facebook/TestSlide?branch=main)
[![Documentation Status](https://readthedocs.org/projects/testslide/badge/?version=main)](https://testslide.readthedocs.io/en/main/?badge=main)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
[![PyPI version](https://badge.fury.io/py/TestSlide.svg)](https://badge.fury.io/py/TestSlide)
[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)
A test framework for Python that enable [unit testing](https://docs.python.org/3/library/unittest.html) / [TDD](https://en.wikipedia.org/wiki/Test-driven_development) / [BDD](https://en.wikipedia.org/wiki/Behavior-driven_development) to be productive and enjoyable.
Its well behaved mocks with thorough API validations catches bugs both when code is first written or long in the future when it is changed.
The flexibility of using them with existing `unittest.TestCase` or TestSlide's own test runner let users get its benefits without requiring refactoring existing code.
## Quickstart
Install:
```
pip install TestSlide
```
Scaffold the code you want to test `backup.py`:
```python
class Backup:
def delete(self, path):
pass
```
Write a test case `backup_test.py` describing the expected behavior:
```python
import testslide, backup, storage
class TestBackupDelete(testslide.TestCase):
def setUp(self):
super().setUp()
self.storage_mock = testslide.StrictMock(storage.Client)
# Makes storage.Client(timeout=60) return self.storage_mock
self.mock_constructor(storage, 'Client')\
.for_call(timeout=60)\
.to_return_value(self.storage_mock)
def test_delete_from_storage(self):
# Set behavior and assertion for the call at the mock
self.mock_callable(self.storage_mock, 'delete')\
.for_call('/file/to/delete')\
.to_return_value(True)\
.and_assert_called_once()
backup.Backup().delete('/file/to/delete')
```
TestSlide's `StrictMock`, `mock_constructor()` and `mock_callable()` are seamlessly integrated with Python's TestCase.
Run the test and see the failure:
![Failing test](https://raw.githubusercontent.com/facebook/TestSlide/main/docs/test_fail.png)
TestSlide's mocks failure messages guide you towards the solution, that you can now implement:
```python
import storage
class Backup:
def __init__(self):
self.storage = storage.Client(timeout=60)
def delete(self, path):
self.storage.delete(path)
```
And watch the test go green:
![Passing test](https://raw.githubusercontent.com/facebook/TestSlide/main/docs/test_pass.png)
It is all about letting the failure messages guide you towards the solution. There's a plethora of validation inside TestSlide's mocks, so you can trust they will help you iterate quickly when writing code and also cover you when breaking changes are introduced.
## Full documentation
There's a lot more that TestSlide can offer, please check the full documentation at https://testslide.readthedocs.io/ to learn more.
## Requirements
* Linux
* Python 3
## Join the TestSlide community
TestSlide is open source software, contributions are very welcome!
See the [CONTRIBUTING](CONTRIBUTING.md) file for how to help out.
## License
TestSlide is MIT licensed, as found in the [LICENSE](LICENSE) file.
## Terms of Use
https://opensource.facebook.com/legal/terms
## Privacy Policy
https://opensource.facebook.com/legal/privacy
## Copyright
Copyright © 2021 Meta Platforms, Inc
Raw data
{
"_id": null,
"home_page": "https://github.com/facebook/TestSlide",
"name": "TestSlide",
"maintainer": "Fabio Pugliese Ornellas",
"docs_url": null,
"requires_python": "",
"maintainer_email": "fabio.ornellas@gmail.com",
"keywords": "",
"author": "",
"author_email": "",
"download_url": "https://files.pythonhosted.org/packages/ee/6f/c8d6d60a597c693559dab3b3362bd01e2212530e9a163eb0164af81e1ec1/TestSlide-2.7.1.tar.gz",
"platform": null,
"description": "![TestSlide](./docs/testslide_logo.png)\n\n[![Build Status](https://github.com/facebook/TestSlide/workflows/CI/badge.svg)](https://github.com/facebook/TestSlide/actions?query=workflow%3ACI)\n[![Coverage Status](https://coveralls.io/repos/github/facebook/TestSlide/badge.svg?branch=main)](https://coveralls.io/github/facebook/TestSlide?branch=main)\n[![Documentation Status](https://readthedocs.org/projects/testslide/badge/?version=main)](https://testslide.readthedocs.io/en/main/?badge=main)\n[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n[![PyPI version](https://badge.fury.io/py/TestSlide.svg)](https://badge.fury.io/py/TestSlide)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n\nA test framework for Python that enable [unit testing](https://docs.python.org/3/library/unittest.html) / [TDD](https://en.wikipedia.org/wiki/Test-driven_development) / [BDD](https://en.wikipedia.org/wiki/Behavior-driven_development) to be productive and enjoyable.\n\nIts well behaved mocks with thorough API validations catches bugs both when code is first written or long in the future when it is changed.\n\nThe flexibility of using them with existing `unittest.TestCase` or TestSlide's own test runner let users get its benefits without requiring refactoring existing code.\n\n## Quickstart\n\nInstall:\n\n```\npip install TestSlide\n```\n\nScaffold the code you want to test `backup.py`:\n\n```python\nclass Backup:\n def delete(self, path):\n pass\n```\n\nWrite a test case `backup_test.py` describing the expected behavior:\n\n```python\nimport testslide, backup, storage\n\nclass TestBackupDelete(testslide.TestCase):\n def setUp(self):\n super().setUp()\n self.storage_mock = testslide.StrictMock(storage.Client)\n # Makes storage.Client(timeout=60) return self.storage_mock\n self.mock_constructor(storage, 'Client')\\\n .for_call(timeout=60)\\\n .to_return_value(self.storage_mock)\n\n def test_delete_from_storage(self):\n # Set behavior and assertion for the call at the mock\n self.mock_callable(self.storage_mock, 'delete')\\\n .for_call('/file/to/delete')\\\n .to_return_value(True)\\\n .and_assert_called_once()\n backup.Backup().delete('/file/to/delete')\n```\n\nTestSlide's `StrictMock`, `mock_constructor()` and `mock_callable()` are seamlessly integrated with Python's TestCase.\n\nRun the test and see the failure:\n\n![Failing test](https://raw.githubusercontent.com/facebook/TestSlide/main/docs/test_fail.png)\n\nTestSlide's mocks failure messages guide you towards the solution, that you can now implement:\n\n```python\nimport storage\n\nclass Backup:\n def __init__(self):\n self.storage = storage.Client(timeout=60)\n\n def delete(self, path):\n self.storage.delete(path)\n```\n\nAnd watch the test go green:\n\n![Passing test](https://raw.githubusercontent.com/facebook/TestSlide/main/docs/test_pass.png)\n\nIt is all about letting the failure messages guide you towards the solution. There's a plethora of validation inside TestSlide's mocks, so you can trust they will help you iterate quickly when writing code and also cover you when breaking changes are introduced.\n\n## Full documentation\n\nThere's a lot more that TestSlide can offer, please check the full documentation at https://testslide.readthedocs.io/ to learn more.\n\n## Requirements\n\n* Linux\n* Python 3\n\n## Join the TestSlide community\n\nTestSlide is open source software, contributions are very welcome!\n\nSee the [CONTRIBUTING](CONTRIBUTING.md) file for how to help out.\n\n## License\n\nTestSlide is MIT licensed, as found in the [LICENSE](LICENSE) file.\n\n\n## Terms of Use\n\nhttps://opensource.facebook.com/legal/terms\n\n\n## Privacy Policy\n\nhttps://opensource.facebook.com/legal/privacy\n\n## Copyright\n\nCopyright \u00a9 2021 Meta Platforms, Inc\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A test framework for Python that makes mocking and iterating over code with tests a breeze",
"version": "2.7.1",
"project_urls": {
"Homepage": "https://github.com/facebook/TestSlide"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ee6fc8d6d60a597c693559dab3b3362bd01e2212530e9a163eb0164af81e1ec1",
"md5": "8de4e902684fd0bd847e06980d732073",
"sha256": "d25890d5c383f673fac44a5f9e2561b7118d04f29f2c2b3d4f549e6db94cb34d"
},
"downloads": -1,
"filename": "TestSlide-2.7.1.tar.gz",
"has_sig": false,
"md5_digest": "8de4e902684fd0bd847e06980d732073",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 50255,
"upload_time": "2023-03-16T14:09:41",
"upload_time_iso_8601": "2023-03-16T14:09:41.204083Z",
"url": "https://files.pythonhosted.org/packages/ee/6f/c8d6d60a597c693559dab3b3362bd01e2212530e9a163eb0164af81e1ec1/TestSlide-2.7.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-03-16 14:09:41",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "facebook",
"github_project": "TestSlide",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"requirements": [],
"lcname": "testslide"
}