GithubHelp home page GithubHelp logo

test-mass-forker-org-1 / testslide Goto Github PK

View Code? Open in Web Editor NEW

This project forked from facebook/testslide

0.0 0.0 0.0 2.32 MB

A Python test framework

Home Page: https://github.com/facebook/TestSlide

License: MIT License

Shell 0.15% Python 98.65% Makefile 1.08% Dockerfile 0.12%

testslide's Introduction

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

testslide's People

Contributors

fornellas avatar deathowl avatar david-caro avatar shish avatar get9 avatar davide125 avatar ldfsilva avatar macisamuele avatar xush6528 avatar vmagro avatar ericliclair avatar r-barnes avatar lhl2617 avatar danielkza avatar cereblanco avatar donkey-hotei avatar yonil1 avatar yezz123 avatar teodorawilde avatar stroxler avatar domandinho avatar mkatsevvr avatar mrkmndz avatar tirkarthi avatar amyreese avatar fried avatar jano avatar iulianmac avatar fboxwala avatar emersonford avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.