Skip to main content

A test framework for Python that makes mocking and iterating over code with tests a breeze

Project description

TestSlide

Build Status Coverage Status Documentation Status GitHub license PyPI version Code style: black

A test framework for Python that enable unit testing / TDD / BDD 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:

class Backup:
  def delete(self, path):
    pass

Write a test case backup_test.py describing the expected behavior:

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

TestSlide's mocks failure messages guide you towards the solution, that you can now implement:

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

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 file for how to help out.

License

TestSlide is MIT licensed, as found in the 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

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

TestSlide-2.7.1.tar.gz (50.3 kB view details)

Uploaded Source

File details

Details for the file TestSlide-2.7.1.tar.gz.

File metadata

  • Download URL: TestSlide-2.7.1.tar.gz
  • Upload date:
  • Size: 50.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.16

File hashes

Hashes for TestSlide-2.7.1.tar.gz
Algorithm Hash digest
SHA256 d25890d5c383f673fac44a5f9e2561b7118d04f29f2c2b3d4f549e6db94cb34d
MD5 8de4e902684fd0bd847e06980d732073
BLAKE2b-256 ee6fc8d6d60a597c693559dab3b3362bd01e2212530e9a163eb0164af81e1ec1

See more details on using hashes here.

Provenance

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