Pytest 還有他的快樂夥伴

Post on 05-Jul-2015

6.156 views 1 download

description

Taipei.py: http://www.meetup.com/Taipei-py/ MOSUT: https://www.facebook.com/groups/mosut/ Tainan.py: http://www.meetup.com/Tainan-py-Python-Tainan-User-Group/

Transcript of Pytest 還有他的快樂夥伴

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

⼯工商服務:台南.py

# 歡迎路過 Tainan.py !

九⽉月⼆二⼗十七⽇日 (六)

下次聚會

# 歡迎路過 Tainan.py !

感謝聆聽

歡迎投稿

# 歡迎路過 Tainan.py !