Created
December 8, 2011 06:45
-
-
Save yumike/1446309 to your computer and use it in GitHub Desktop.
Thoughts about RSpec for Python
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# codec: blocks | |
describe('articles.views.ArticleView'): | |
context('when user has permissions'): | |
it('should add new article'): | |
# some code | |
it('should delete existing article'): | |
# some code | |
context('when user has no permissions'): | |
it('should not add new article') | |
it('should not even show article form') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from bdd import describe, context, it | |
with describe('articles.views.ArticleView'): | |
with context('when user has permissions'): | |
@it('should add new article') | |
def test(): | |
# some code | |
@it('should delete existing article') | |
def test(): | |
# some code | |
with context('when user has no permissions'): | |
# pending tests | |
it('should not add new article') | |
it('should not even show article form') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
@gabrielfalcao sure surely looks like a nice assertion library, thanks for that! :)
However, the discussion here is about a library that helps to structure tests, like RSpec does.
Namely, something that helps you to write test names and their structure, even before you actually write any assertion.
This is a powerful communication and designing tool, that gives you a lot more than simply a cool way to do assertions: it helps you to think, to plan and to adapt later on.
Assertions are probably not that important when it comes to high-level design, except when deciding to use mocks vs stubs.
This excerpt from the RSpec book might be a good introduction to these ideas: http://media.pragprog.com/titles/achbd/outside-in.pdf
I haven't find a really good tool in Python ecossystem for that yet.
mamba looks promising.
There are some other alternatives behave, pytest-bdd, lettuce and etc, but none seems to attempt to help the upfront thinking when design -- they always get in the way, requiring you to write boilerplate stuff.