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
pytest 還有他的快樂夥伴
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
joe
August 27, 2014
Programming
2
210
pytest 還有他的快樂夥伴
welcome to Tainan.py:
http://www.meetup.com/Tainan-py-Python-Tainan-User-Group/
joe
August 27, 2014
Tweet
Share
More Decks by joe
See All by joe
暖場與 Web 相關的小玩具 @ Tainan.py 2013.09.28
excusemejoe
1
210
開場與自我介紹 @ Tainan.py 2013.06.29
excusemejoe
0
67
Taipei.py Logo 的小故事 @ Taipei.py 2013.06.29
excusemejoe
0
220
Bottle Introduction @ Tainan.py 前微聚會
excusemejoe
1
100
PyConTW 2013 Lightning Talk: Bottle vs. Startup
excusemejoe
5
200
Tapei.py Bottle Introduction @2013.03.28
excusemejoe
2
110
Other Decks in Programming
See All in Programming
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
13
7.9k
どんと来い、データベース信頼性エンジニアリング / Introduction to DBRE
nnaka2992
1
260
受け入れテスト駆動開発(ATDD)×AI駆動開発 AI時代のATDDの取り組み方を考える
kztakasaki
2
550
手戻りゼロ? Spec Driven Developmentとは@KAG AI week
tmhirai
1
190
株式会社 Sun terras カンパニーデック
sunterras
0
2k
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
1
210
encoding/json/v2のUnmarshalはこう変わった:内部実装で見る設計改善
kurakura0916
0
390
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
340
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
380
AI時代のソフトウェア開発でも「人が仕様を書く」から始めよう-医療IT現場での実践とこれから
koukimiura
0
140
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
220
New in Go 1.26 Implementing go fix in product development
sunecosuri
0
410
Featured
See All Featured
AI: The stuff that nobody shows you
jnunemaker
PRO
3
370
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
250
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
GraphQLとの向き合い方2022年版
quramy
50
14k
30 Presentation Tips
portentint
PRO
1
250
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
89
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
64
53k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
390
ラッコキーワード サービス紹介資料
rakko
1
2.6M
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
35k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
310
Transcript
pytest 還有他的 快樂夥伴 魯蛇喬 @ Taipei.py 2014.08
⼀一般來講 「快樂夥伴」是不重要 的配⾓角們的簡稱 …
他們是值得學習的 今天相反
等等會聊到 … • JUnit • MiniTest • PyUnit (a.k.a. unittest)
• pytest
先假設你看得懂下述魔法:
早就變成潮男(⼥女)了! JUnit 年紀最⼤大的快樂夥伴:
起源 Kent Beck Erich Gamma
最新版的 JUnit
看⼀一下現在怎麼⽤用 JUnit
⼤大量使⽤用 @ annotation Output:
甚⾄至有 @Rule 可取代 before, after ..
None
–肯定句 「現在正在進⾏行 Python 聚會。」
但是 JUnit 還有好多功能 … @theory … 與測試環境/IDE的整合 …
我就是強! 潮男無誤
朝全⽅方位藝⼈人發展 MiniTest 最閃亮的快樂夥伴:
為什麼選他? 2. Ruby 1.9.x bundles minitest not Test::Unit. 1. ⼀一定程度相容
RSpec
有何特⾊色? Unit tests Specs
還有? Benchmark Mock
點到為⽌止、我最簡單 全⽅方位發展
也就是 Python STD 裡⾯面的 unittest PyUnit 最親密的快樂夥伴:
依循著 JUnit 早期的脈絡發展 • 以 3.4.1 為例,基本款功能有: • hooks: setUp/tearDown
… • test discovery 機制 • @unittest.skip /skipif / skipUnless 機制 • 進階款功能: • subtests • 內建 mock
不潮、不多功能 宅男無誤
潮不潮不重要,重點是能夠更好嗎? 少了什麼? ⼀一起想⼀一下:
打得贏 除了unittest以外的 凶殘夥伴嗎? pytest 主⾓角登場:
under certain condition sure
None
No Boilerplate 5. 4. 3. 2. 1.
Assertion: No API & More Pythonic
setUp/tearDown … ? 伊⼈人何處尋
改⽤用 fixture 系統,擁抱 dependency injection 新⼈人換舊⼈人
破除不顯著的時序耦合 1. 4. 3. 2. 我看 報紙才 參數列就知道發⽣生什麼事! #很像 JUnit
的 @Rule 對吧!
可控 fixture 的 scope
清理 fixture
可控 fixture 的 scope
以 fixture 注⼊入另⼀一個 fixture
依照參數⽣生成各種 fixture 且⾃自動注⼊入測試
fixture x fixture
加強版 setUp …
mark 系統
plugins
請參閱官網 tl;r # 或之前在 Tainan.py 分享的 slides
⾃自從有了 pytest 後 ⽤用 Python 寫 tests 可以更快樂 其實
主⾓角打不打得過快樂夥伴不重要 … 結論 # 是否從此對 Testing Framework 更有想法?
True assert QA.time == 0
⼯工商服務:台南.py # 歡迎路過 Tainan.py !
九⽉月⼆二⼗十七⽇日 (六) 下次聚會 # 歡迎路過 Tainan.py !
感謝聆聽 歡迎投稿 # 歡迎路過 Tainan.py !