快快樂樂成為 Coding Ninja (by pytest) @ PyConAPAC2015

Post on 28-Jul-2015

2.377 views 2 download

Transcript of 快快樂樂成為 Coding Ninja (by pytest) @ PyConAPAC2015

快快樂樂成為 Coding Ninja (by pytest)

Chun-Yu Tseng

快快樂樂成為 Coding Ninja (by pytest)

Joe a.k.a. 魯蛇喬

First year

寫 API ..

寫出更多 API ..

寫出更多 API .. 以及 bugs

半年後開始撰寫測試(沒有用 testing tool )

Second year

寫 Web (few tests)

寫 API (try ATDD)

已經開始用 pytest (level 0)

Third year

我放假半年 XD

寫寫 API 賺零用錢、辦 Tainan.py 聚會、吃雞排看 TDD 大戰、看看 Agile 、設計心理學、被 Haskell 電爆 … 認真學習 pytest 怎麼用

Fourth year -

加入一個傳說中有很多 python code 的非營利組織

結果其實天殺的 js 更多

寫一點 e2e tests 徵人

測試二三事的小心得

專業測試很難

開發者仍需有基本的測試思維

學習基本概念的門檻略高(都是 xUnit Style )

據說今天的演講目的

讓新手快快樂樂上手 pytest 及接觸測試思維

讓進階者 …

呃 … 天涼就加件外套吧!

大綱(如果時間夠的話?)

為什麼你不寫測試?

pytest 是啥?

快快樂樂上手貼司挺

邁向 Coding Ninja 之路!

大綱(如果時間夠的話?)

為什麼你不寫測試?

pytest 是啥?

快快樂樂上手貼司挺

邁向 Coding Ninja 之路!

幹嘛要測試軟體?

你選擇用哪種方式來測試?

用人來測:

自己來

讓同事測(交情大考驗)

讓老闆 /PM 測(薪水大考驗)

讓使用者測(人品大考驗之時間不夠的密技)

用機器來測:

在開發環境跑 unit testing

在 CI server 跑 integration/functional testing

為什麼你不寫測試?

不讓機器幫忙測試的理由

理由一:不需要測

理由二:不好測

理由三:不會寫

理由四:懶得寫

不讓機器幫忙測試的理由排行榜

理由一:不需要測

理由二:不好測

理由三:不會寫

理由四:懶得寫

立馬來解決這兩個問題!

Live Demo: 解決不會寫!

寫得有點 … 隨性 ?

這是很實際的測試方式

但是不實用 …

所以我們會使用 testing framework 來協助我們測試(撰寫上要遵守特定的規則)

Live Demo: 解決太隨性的問題?

從此以後可以開心的寫測試?

從此以後可以開心的寫測試?才怪

完全讓人懶得寫測試啊啊啊

要寫好多 Code

莫名的 assertEqual API …

滿滿的 Old xUnit Style …

setUp / tearDown

Ref: 去年在 Taipei.py 的分享

讓我們來解決懶得寫的問題!

大綱(如果時間夠的話?)

為什麼你不寫測試?

pytest 是啥?

快快樂樂上手貼司挺

邁向 Coding Ninja 之路!

pytest

另一個 testing framework

採用更加 Pythonic 的方式來協助測試

並且向下支援 xUnit Style 的測試程式碼

玩玩看就知道了!

Live Demo: 解決懶得寫的問題

發現了嗎? pytest …

No-boilerplate testing ( 不用再繼承 … )

Assert 打天下

偏好用扁平化的方式組織測試程式碼

Live Demo: fixture system

pytest 的 fixture 超好用!

可以用 yield 的方式製造出 fixture

再也不用擔心 db.close(), f.close() 的問題

可以自訂 fixture 的生存 scope

function/class/file/module/session

支援用 fixture 生成 fixture

pytest 的其他功能

Test discovery

Mark system ( 分群組、 skipif …)

Parametrized test functions

Plugins趕快到 官網 瞧瞧!

大綱(如果時間夠的話?)

為什麼你不寫測試?

pytest 是啥?

快快樂樂上手貼司挺

邁向 Coding Ninja 之路!

寫個 unit test 先

再寫個 integration test

KO 掉 functional test

大綱(如果時間夠的話?)

為什麼你不寫測試?

pytest 是啥?

快快樂樂上手貼司挺

邁向 Coding Ninja 之路!

快速回顧

告訴你測試的好處

解決不會寫、懶得寫的問題

簡介 pytest

寫了三種類型的入門測試

Coding Ninja 至少還需要 …

更加熟悉 testing tool (pytest/nose/unittest ..)

更深入地探討三種測試

了解 (OO) Design 相關的原則與 patterns

嘗試看看 TDD/*DD

標題是 Coding Ninja 非 Testing Ninja

最終目的仍然是「開發」

不要過度測試

自己去判斷該不該測

加快 feedback loop 與保持 confidence 是秘訣

成為 Coding Ninja 的不二法門

Done

工商服務(上)均一教育平台招募:實習生、正職員工

http://junyiacademyhr.weebly.com/

工商服務(下)Tainan.py 六月份聚會暫定於 6/27 於台南舉辦

https://www.facebook.com/groups/mosut

assert QA.time == False

Thank You