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
0
160
Funcargs and other fun with pytest
Presented at PyCon AU 2012.
Brianna Laugher
August 18, 2012
Tweet
Share
More Decks by Brianna Laugher
See All by Brianna Laugher
Realities of open source testing: Lessons learned from Adopt Pytest Month
pfctdayelise
0
120
Crowd funded free software
pfctdayelise
0
75
Dynamic visualisation in the IPython Notebook
pfctdayelise
0
140
Zookeepr: home grown conference management software
pfctdayelise
0
84
Why "gender" should be a text field
pfctdayelise
0
110
Distributed wikis
pfctdayelise
0
81
Neurosexism
pfctdayelise
0
190
Clash of the encyclopedias: is competition good for sharing?
pfctdayelise
0
74
Language sleuthing HOWTO
pfctdayelise
0
96
Other Decks in Technology
See All in Technology
Microsoft for Startups Founders Hub_20240429 update
daikikanemitsu
1
2.4k
社内アプリで Cloudflare D1を プロダクト運用してみた体験談(Tokyo)
haochenx
0
120
今年のRubyKaigiはProfiler Year🤘
osyoyu
0
390
Gradle Build Scanを使ってビルドのことを知ろう potatotips #87
tomorrowkey
2
160
20分で完全に理解するGrafanaダッシュボード
hamadakoji
5
890
AWS学習者向けにAzureの解説スライドを作成した話
handy
3
190
2023年度にEMとして頑張ったこと
ikefukurou777
0
100
IaCジェネレーターとBedrockで詳細設計書を生成してみた
tsukasa_ishimaru
4
890
Documentação de Produtos: Artefatos essenciais na prática
rigolon
1
130
M5と自作基板をくっつけてみた〜M5 Japan Tour 2024 Spring 福冈 (Fukuoka|福岡)〜
keropiyo
0
150
今さら聞けないDocker入門 〜 Dockerfileのベストプラクティス編
devops_vtj
6
870
生産性向上チームの紹介
cybozuinsideout
PRO
1
920
Featured
See All Featured
Faster Mobile Websites
deanohume
300
30k
Producing Creativity
orderedlist
PRO
338
39k
Raft: Consensus for Rubyists
vanstee
133
6.3k
What's in a price? How to price your products and services
michaelherold
238
11k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
21
1.4k
Mobile First: as difficult as doing things right
swwweet
217
8.6k
Product Roadmaps are Hard
iamctodd
45
9.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
21
6.4k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
14
1.5k
A Modern Web Designer's Workflow
chriscoyier
689
190k
Side Projects
sachag
451
41k
[RailsConf 2023] Rails as a piece of cake
palkan
27
4k
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