Funcargs & other fun with pytest
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Funcargs & other fun with pytest

  • 20,754 views
Uploaded on

Video - http://www.youtube.com/watch?v=DTNejE9EraI ...

Video - http://www.youtube.com/watch?v=DTNejE9EraI
Code - https://gist.github.com/3386951

Pytest is a mature and comprehensive testing suite for Python projects, but it can be a little intimidating for newcomers. Where do these mysterious funcargs come from, how do parametrised tests work, and where are my xUnit-style setUp and tearDown methods?

Pytest lives by "convention over configuration" - which is great once you know what the conventions are. This talk will look at real examples of pytest in use, emphasising the features that differentiate it from nose.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
20,754
On Slideshare
3,690
From Embeds
17,064
Number of Embeds
20

Actions

Shares
Downloads
20
Comments
0
Likes
7

Embeds 17,064

http://seleniumhq.wordpress.com 14,847
http://blog.restartr.com 1,515
http://feeds.feedburner.com 458
http://v.restartr.com 158
http://blogs.restartr.com 19
http://www.newsblur.com 17
http://translate.googleusercontent.com 8
https://seleniumhq.wordpress.com 7
http://feedspot.com 7
http://restartr.github.io 7
http://webcache.googleusercontent.com 6
http://xianguo.com 5
http://www.google.co.jp 3
http://www.ustart.org 1
http://www.feedspot.com 1
http://www.box.com 1
http://www.google.com&_=1346702844602 HTTP 1
http://131.253.14.98 1
http://getpocket.com 1
http://www.excite-webtl.jp 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. funcargs & other fun with pytest PyCon AU 2012 Brianna Laugher
  • 2. pytest – all the good stuff✔ all test styles: unittest, doctest, nose✔ boilerplate-free style – natural asserts✔ support for running tests distributed, boxed✔ generate JUnit-style XML for Jenkins CI✔ informative error reporting✔ extensible plugins, useful builtins✔ skip, xfail, custom markers✔ parametrize, generate tests✔ monkeypatch✔ funcargs!
  • 3. my background● using pytest seriously for ~18 months at work● really enjoying it!● how it feels to use pytest: →
  • 4. Graphical Forecast Editor● client/server desktop application used by forecasters to generate the (text & graphical) forecasts● pilot in VIC, funding to roll out nationally, ~5 year project, 20+ new devs/testers● existing codebase of Python and C++ (used operationally in US) ● home-grown test suite and runner (via GUI)
  • 5. informative error reporting
  • 6. informative error reporting
  • 7. extensible● e.g. add in unittest assert methods
  • 8. extensible● e.g. add hook for winpdb
  • 9. skip
  • 10. xfail
  • 11. custom markers
  • 12. parametrize
  • 13. generate tests● defined once per module● list/generate data to supply to 1+ tests● way more flexible cf. py.test.mark.parametrize
  • 14. generate generators!
  • 15. monkeypatch
  • 16. funcargs!
  • 17. funcargs – idealised db example
  • 18. funcargs – trivial django example
  • 19. funcargs – trivial GAE examples
  • 20. funcargs – trivial GAE examples
  • 21. funcargs – why?● dependency injection, aka inversion of control ● works a treat with TDD ● very natural with mocking ● encourages modular design
  • 22. funcargs – a real DB example
  • 23. funcargs – a real DB example
  • 24. funcargs – to express prereqs● for when a decorator is not powerful enough
  • 25. funcargs – to hide monkeypatch :)
  • 26. generate + funcarg - anypython
  • 27. pytest – the future
  • 28. test evolution -v0
  • 29. test evolution - v1
  • 30. test evolution - v2
  • 31. test evolution – v3
  • 32. test evolution - v4
  • 33. pytest – all the good stuff✔ all test styles: unittest, doctest, nose✔ boilerplate-free style – natural asserts✔ support for running tests distributed, boxed✔ generate JUnit-style XML for Jenkins CI✔ informative error reporting✔ extensible plugins, useful builtins✔ skip, xfail, custom markers✔ parametrize, generate tests✔ monkeypatch✔ funcargs!
  • 34. ● http://codespeak.net/mailman/listinfo/py-dev● testing-in-python mailing list● Stack Overflow● lead developer Holger Krekel is very responsive
  • 35. pytest.org
  • 36. credits, thanks, contactComic panels from comicallyvintage.tumblr.comBureau of Meteorology● In particular, Darius Powell introduced pytest to our projectCode examples: gist.github.com/3386951 brianna@modernthings.org brianna.laugher.id.au / b.laugher@bom.gov.au @pfctdayelise