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 ..
–肯定句
「現在正在進⾏行 Python 聚會。」
但是 JUnit 還有好多功能 …
@theory … 與測試環境/IDE的整合 …
我就是強!
潮男無誤
朝全⽅方位藝⼈人發展MiniTest
最閃亮的快樂夥伴:
為什麼選他?
2. Ruby 1.9.x bundles minitest not Test::Unit.1. ⼀一定程度相容 RSpec
有何特⾊色?
Unit tests Specs
還有?
Benchmark
Mock
點到為⽌止、我最簡單
全⽅方位發展
也就是 Python STD 裡⾯面的 unittestPyUnit
最親密的快樂夥伴:
依循著 JUnit 早期的脈絡發展• 以 3.4.1 為例,基本款功能有:
• hooks: setUp/tearDown …
• test discovery 機制
• @unittest.skip /skipif / skipUnless 機制 • 進階款功能:
• subtests
• 內建 mock
不潮、不多功能
宅男無誤
潮不潮不重要,重點是能夠更好嗎?
少了什麼?
⼀一起想⼀一下:
打得贏 除了unittest以外的 凶殘夥伴嗎?pytest
主⾓角登場:
under certain condition
sure
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 更有想法?
Trueassert QA.time == 0
Top Related