Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
pytest 還有他的快樂夥伴
Search
joe
August 27, 2014
Programming
2
200
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
200
開場與自我介紹 @ Tainan.py 2013.06.29
excusemejoe
0
65
Taipei.py Logo 的小故事 @ Taipei.py 2013.06.29
excusemejoe
0
210
Bottle Introduction @ Tainan.py 前微聚會
excusemejoe
1
100
PyConTW 2013 Lightning Talk: Bottle vs. Startup
excusemejoe
5
190
Tapei.py Bottle Introduction @2013.03.28
excusemejoe
2
100
Other Decks in Programming
See All in Programming
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
440
WebRTC、 綺麗に見るか滑らかに見るか
sublimer
1
110
テストやOSS開発に役立つSetup PHP Action
matsuo_atsushi
0
130
スタートアップを支える技術戦略と組織づくり
pospome
8
14k
しっかり学ぶ java.lang.*
nagise
1
470
ViewファーストなRailsアプリ開発のたのしさ
sugiwe
0
350
乱雑なコードの整理から学ぶ設計の初歩
masuda220
PRO
32
15k
2025 컴포즈 마법사
jisungbin
1
170
Microservices Platforms: When Team Topologies Meets Microservices Patterns
cer
PRO
1
840
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
190
【CA.ai #3】Google ADKを活用したAI Agent開発と運用知見
harappa80
0
110
『実践MLOps』から学ぶ DevOps for ML
nsakki55
2
530
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.2k
How to train your dragon (web standard)
notwaldorf
97
6.4k
What's in a price? How to price your products and services
michaelherold
246
12k
Site-Speed That Sticks
csswizardry
13
980
Practical Orchestrator
shlominoach
190
11k
Side Projects
sachag
455
43k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Building Applications with DynamoDB
mza
96
6.8k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
285
14k
Become a Pro
speakerdeck
PRO
30
5.7k
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 !