Basic Usage

The goal of Should-DSL is to write should expectations in Python as clear and readable as possible, using “almost” natural language (limited - sometimes - by the Python language constraints).

In order to use this DSL, you need to import should and should_not objects from should_dsl module.

cards_game_spec.py:

import unittest
from should_dsl import should, should_not
from cards_game import Player, Card


class CardsGameExamples(unittest.TestCase):

  def setUp(self):
    self.player = Player('John Doe')

  def test_player_has_initial_number_of_cards(self):
    self.player |should| have(11).cards

  def test_player_has_a_name(self):
    self.player.name |should| equal_to('John Doe')

  def test_discard_card(self):
    card = Card('Q', 'spades')
    self.player.discard(card)
    self.player.hand |should_not| contain(card)


if __name__ == '__main__':
    unittest.main()
$ python cards_game_spec.py  -v
test_discard_card (__main__.CardsGameExamples) ... ok
test_player_has_initial_number_of_cards (__main__.CardsGameExamples) ... ok
test_player_has_a_name (__main__.CardsGameExamples) ... ok

----------------------------------------------------------------------
Ran 3 tests in 0.002s

OK

Documentation

Should-DSL Matchers: check all available matchers

Predicate Matchers: predicate matchers are the matchers work with boolean methods and attributes and thetgive users more freedom to write more readable specifications.

Custom Matchers: extending Should-DSL with custom matchers is very easy. It is possible to add matchers through functions and classes, for simple and complex behaviors.

Contributing: see how you can contribute to Should-DSL development

License: MIT License

Installation

Should-DSL can be installed through PyPI, using pip or easy_install.

$ pip install should-dsl
# maybe you need to run it as sudo

Powered by

Table Of Contents

Next topic

Should-DSL Matchers

This Page