title: Is there a preferred BDD style unit-testing framework for Python?
body: <p>I was wondering if there are any BDD-style 'describe-it' unit-testing frameworks for Python that are maintained and production ready. I have found <a href="https://pypi.python.org/pypi/describe/0.1.2" rel="nofollow">describe</a>, but it doesn't seem to be maintained and has no documentation. I've also found <a href="http://falcao.it/sure" rel="nofollow">sure</a> which reached 1.0, but it seems to just add syntactic sugar instead of writing assertions. What I'm really looking for is something similar to RSpec and Jasmine that enables me to setup test suites. The describe-it syntax that allows for testing multiple cases of a function. Versus a classical assertion structure that tests each function once and has multiple assertions for testing multiple cases. This breaks the isolation of a unit test. If there's a way to achieve something similar with the assertion-style testing I'd appreciate any advice on how to do it. Below are simple examples of both styles:</p>
  
  <p><strong>foo.py</strong></p>
  
  <pre><code>class Foo():
      def bar(self, x):
          return x + 1
  </code></pre>
  
  <p><strong>BDD-Style/Describe-It</strong></p>
  
  <p><strong>test_foo.py</strong></p>
  
  <pre><code>describe Foo:
      describe self.bar:
          before_each:
              f = Foo()
  
          it 'returns 1 more than its arguments value':
              expect f.bar(3) == 4
  
          it 'raises an error if no argument is passed in':
              expect f.bar() raiseError
  </code></pre>
  
  <p><strong>Unittest/assertion-style</strong></p>
  
  <p><strong>test_foo.py</strong></p>
  
  <pre><code> class Foo():
       def test_bar(x):
           x = 3
           self.assertEqual(4)
           x = None
           self.assertRaises(Error)
  </code></pre>