快快樂樂成為 Coding Ninja (by pytest) @ PyConAPAC2015
-
Upload
chun-yu-tseng -
Category
Technology
-
view
2.380 -
download
2
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
工商服務(下)Tainan.py 六月份聚會暫定於 6/27 於台南舉辦
https://www.facebook.com/groups/mosut
assert QA.time == False
Thank You