Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Funcargs and other fun with pytest
Search
Brianna Laugher
August 18, 2012
Technology
300
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Funcargs and other fun with pytest
Presented at PyCon AU 2012.
Brianna Laugher
August 18, 2012
More Decks by Brianna Laugher
See All by Brianna Laugher
Realities of open source testing: Lessons learned from Adopt Pytest Month
pfctdayelise
0
270
Crowd funded free software
pfctdayelise
0
210
Dynamic visualisation in the IPython Notebook
pfctdayelise
0
290
Zookeepr: home grown conference management software
pfctdayelise
0
200
Why "gender" should be a text field
pfctdayelise
0
280
Distributed wikis
pfctdayelise
0
220
Neurosexism
pfctdayelise
0
330
Clash of the encyclopedias: is competition good for sharing?
pfctdayelise
0
210
Language sleuthing HOWTO
pfctdayelise
0
260
Other Decks in Technology
See All in Technology
ホームラボ紹介
y_sera15
0
160
Sets in Go
ramalho
1
410
今こそ聞きたいソフトウェア設計 ドメイン駆動設計再入門
masuda220
PRO
17
7.2k
TypeScript入門 2026
recruitengineers
PRO
3
570
AWS ネットワーク構築でハマった(ハマりかけた) 5選とそこから得た教訓
nagisa53
4
210
制約理論(ToC)入門 2026版
recruitengineers
PRO
8
2.2k
Digitization部 紹介資料
sansan33
PRO
2
7.7k
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
4
580
侵入は突然に 〜 IoTマルウェアと悪用される家庭の機器 ~ / When Intrusion Strikes: IoT Malware and the Abuse of Home Devices
nttcom
0
1.6k
私がブラウザを自作したくなった理由
supurazako
1
230
修正PRを食べてレビュースキルが賢くなる:Claude Codeによる自己改善サイクル
yuyaumetsu
6
1.5k
Data Hubグループ 紹介資料
sansan33
PRO
0
3.2k
Featured
See All Featured
The Limits of Empathy - UXLibs8
cassininazir
1
600
Into the Great Unknown - MozCon
thekraken
41
2.7k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
240
Build your cross-platform service in a week with App Engine
jlugia
234
19k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
520
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
25k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
630
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
200
Building an army of robots
kneath
306
46k
Transcript
PyCon AU 2012 Brianna Laugher funcargs & other fun with
pytest
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!
None
my background • using pytest seriously for ~18 months at
work • really enjoying it! • how it feels to use pytest: →
None
None
None
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)
None
informative error reporting
informative error reporting
extensible • e.g. add in unittest assert methods
extensible • e.g. add hook for winpdb
None
skip
xfail
custom markers
None
parametrize
None
generate tests • defined once per module • list/generate data
to supply to 1+ tests • way more flexible cf. py.test.mark.parametrize
generate generators!
None
monkeypatch
None
None
None
None
funcargs!
funcargs – idealised db example
funcargs – trivial django example
funcargs – trivial GAE examples
funcargs – trivial GAE examples
None
funcargs – why? • dependency injection, aka inversion of control
• works a treat with TDD • very natural with mocking • encourages modular design
None
funcargs – a real DB example
funcargs – a real DB example
funcargs – to express prereq's • for when a decorator
is not powerful enough
None
funcargs – to hide monkeypatch :)
None
generate + funcarg - anypython
None
None
pytest – the future
None
test evolution -v0
None
test evolution - v1
test evolution - v2
test evolution – v3
test evolution - v4
None
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!
None
None
• http://codespeak.net/mailman/listinfo/py-dev • testing-in-python mailing list • Stack Overflow •
lead developer Holger Krekel is very responsive
pytest.org
credits, thanks, contact Comic panels from comicallyvintage.tumblr.com Bureau of Meteorology
• In particular, Darius Powell introduced pytest to our project Code examples: gist.github.com/3386951
[email protected]
brianna.laugher.id.au /
[email protected]
@pfctdayelise