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
290
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
260
Crowd funded free software
pfctdayelise
0
200
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
270
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
250
Other Decks in Technology
See All in Technology
SONiCのLinuxベースを活かしたZabbix監視
sonic
0
260
現場のトークンマネジメント
dak2
1
150
AIチャットの改善から見えた、良いAI体験とは / What Constitutes a Good AI Experience: Insights from Improving AI Chat
kubode
0
100
データレイクの「見えない問題」を可視化する
sansantech
PRO
1
150
自宅LLMの話
jacopen
1
690
秘密度ラベル初心者が第1歩でつまづかないための「設計・運用」ポイント
seafay
PRO
1
400
インシデントレスポンス演習 I / Incident Response Exercise I
ks91
PRO
0
100
【Snowflake Summit 2026 Recap!!】Snowflake Summit Deep Dive: Security & Governance
civitaspo
1
290
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
3k
AIAU_UMEMOGU_ninomiya_slide
ninomiya_ii
0
250
生成 AI 実践ガイド (概略版) AIガバナンス編
asei
0
140
iOS アプリの「これって不具合ですか?」を AI に調べてもらう
miichan
0
120
Featured
See All Featured
The Spectacular Lies of Maps
axbom
PRO
1
820
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.3k
Typedesign – Prime Four
hannesfritz
42
3.1k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
850
How Software Deployment tools have changed in the past 20 years
geshan
0
34k
Prompt Engineering for Job Search
mfonobong
0
350
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
270
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
230
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
118
120k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
My Coaching Mixtape
mlcsv
0
150
Product Roadmaps are Hard
iamctodd
PRO
55
12k
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