SlideShare a Scribd company logo
1 of 83
Download to read offline
Joe @ Kaosiung.py 2014.05.26
Testing in Python
新手給的測試入門課
Diff
跟前一場演講不一樣 ...
魯蛇喬 (Joe)
半端工程師
75% 後端 25% 前端
Demo Code
https://bitbucket.org/devjoe/talk_tip
Outline
• Testing Frameworks/ Tools in Python
• Python in TDD
• Reference
Doctest
Readability Counts
Demo
doctest
文件即程式碼
程式碼即文件
unittest
Builtin tool
Demo
unittest
來自 JUnit ...
我隔我隔我隔隔隔
nose
強大的加強版 unittest
Demo
nose
可以外掛很多套件
不夠還可以自己寫
py.test
更加直覺的瑞士小刀
Demo
py.test
據說更加 pythonic
彩色就贏了?
lettuce & behave
客戶最愛的守規矩的生菜
Demo
lettuce
lettuce
lettuce
如果不是要寫 unit &
integration test ?
有工具幫助我寫 Functional tests 嗎?
呃 ... 我只會一點 Web
魯蛇喬與他的快樂好朋友
requests / pyquery
自幹無敵
Demo
requests
其實也沒那麼累
某人以前傻傻的自幹過 by httplib2
ghost.py
來跑 javascript 吧!
No Demo
javascript == "潮"
True
Pyccuracy
客戶站在 selenium 的肩膀上
Dead Demo
Bj4
Robot Framework
巨人站在巨人肩膀上 (java/python)
Dead Demo
很好很強大
今年 PyConAPAC 有講者介紹過
https://pyconapac2014.hackpad.com/PyCon-APAC-2014-Co-
Notes-Index-ZQKz3p7rhmP
議程全筆記
更多的 Testing
Search: python testing tools taxonomy
Outline
• Testing Frameworks/ Tools in Python
• Python in TDD
• Reference
Why "Python in TDD" ?
Not "TDD in Python" ?
Or "Python in Python" ?
Or "TDD inTDD" ?
TDD by example (Kent Beck @ 2002)
• The money example
• The xUnit Example
• Patterns for Test-Driven Development
• TDD patterns
• Red Bar patterns
• Testing patterns
• Green Bar patterns
• xUnit Patterns
• Design Patters
• Refactoring
• Mastering TDD
Written in Python
而且用 TDD 開發 TDD Tool
Done Demo
Note
• TDD 是組合技
• 使用 TDD 不可能導致 Over Design
• 寫太多 Sub/Mock/Fake 叫做 Over Implementation
• 拿出紙筆寫下需求清單與測試清單
• TDD 有成本
Outline
• Testing Frameworks/ Tools in Python
• Python in TDD
• Reference
• 2011 出版有點舊
• 附程式碼很方便
• PACKT 可購得
• 經典 BJ4
• 我在網路上看到最好的快速上手中文教學
• 還沒看 XD
•  預計在 Tainan.py 分享
工商服務
更多的 Python
一切的開始
我要到台南辦 Tainan.p*
還有吃牛肉湯
搬到台南後 ...
得到 Logo !
得到在地社群的支持 !
場地器材提供 !
Tainan.py
• Since 2013.06 ~
• 從 Taipei.py fork 出來的聚會
• 常與 MOSUT 社群合辦
• 一場演講常常 1 Hour 起跳
• 常常有好吃的東東
• 徵志工 (也想玩 meetup 系統嗎)
總共辦過 10 次
週六舉辦
人也很多
強者
Python + Open
議程回顧
bottle
rst format, sphinx, google cloud
platform, x86 machine code
thread safety, 用 python 實作OSX/WIN
dual monitor information query 及 url
entrycache 的探訪與刪除, linux/C 組裝
軟體的心得, linux CNC, 5 分鐘 git 上手
garbage collection, pypy, 數
學女孩之機率的崩壞, Kinect
簡介
python type and
object, git 狀況劇
keith 閒聊, shell 導
讀, 自由曲面
virtualization, unicode in
python, 用 shedskin 加速
python
下次聚會?

5/31 14:00
Testing in python, TDD in
python, 資料分析用 python
歡迎投稿
一起吃好料吧!

More Related Content

What's hot

Web testing automation
Web testing automationWeb testing automation
Web testing automationkuozui
 
單元測試介紹
單元測試介紹單元測試介紹
單元測試介紹Adison wu
 
持續整合與單元測試
持續整合與單元測試持續整合與單元測試
持續整合與單元測試昱劭 劉
 
自動測試 - 測試對象的識別/封裝
自動測試 - 測試對象的識別/封裝自動測試 - 測試對象的識別/封裝
自動測試 - 測試對象的識別/封裝Li-Wei Yao
 
例外處理實務
例外處理實務例外處理實務
例外處理實務Jeff Chu
 
認試軟體測試的世界 & TDD/BDD 入門
認試軟體測試的世界 & TDD/BDD 入門認試軟體測試的世界 & TDD/BDD 入門
認試軟體測試的世界 & TDD/BDD 入門wantingj
 
Foundation of software development 1
Foundation of software development 1Foundation of software development 1
Foundation of software development 1netdbncku
 
例外處理與單元測試
例外處理與單元測試例外處理與單元測試
例外處理與單元測試國昭 張
 

What's hot (9)

Web testing automation
Web testing automationWeb testing automation
Web testing automation
 
單元測試介紹
單元測試介紹單元測試介紹
單元測試介紹
 
持續整合與單元測試
持續整合與單元測試持續整合與單元測試
持續整合與單元測試
 
自動測試 - 測試對象的識別/封裝
自動測試 - 測試對象的識別/封裝自動測試 - 測試對象的識別/封裝
自動測試 - 測試對象的識別/封裝
 
例外處理實務
例外處理實務例外處理實務
例外處理實務
 
認試軟體測試的世界 & TDD/BDD 入門
認試軟體測試的世界 & TDD/BDD 入門認試軟體測試的世界 & TDD/BDD 入門
認試軟體測試的世界 & TDD/BDD 入門
 
Foundation of software development 1
Foundation of software development 1Foundation of software development 1
Foundation of software development 1
 
Unit test
Unit testUnit test
Unit test
 
例外處理與單元測試
例外處理與單元測試例外處理與單元測試
例外處理與單元測試
 

Viewers also liked

PyConAPAC2014 Tainan.py 介紹
PyConAPAC2014 Tainan.py 介紹PyConAPAC2014 Tainan.py 介紹
PyConAPAC2014 Tainan.py 介紹Chun-Yu Tseng
 
當資訊科技撞上臺南牛肉湯的那些事兒 @ 2014 NCKU EDiT 科技啓蒙
當資訊科技撞上臺南牛肉湯的那些事兒 @ 2014 NCKU EDiT 科技啓蒙當資訊科技撞上臺南牛肉湯的那些事兒 @ 2014 NCKU EDiT 科技啓蒙
當資訊科技撞上臺南牛肉湯的那些事兒 @ 2014 NCKU EDiT 科技啓蒙小均 張
 
PyConAPAC2014 BoF Introduction
PyConAPAC2014 BoF IntroductionPyConAPAC2014 BoF Introduction
PyConAPAC2014 BoF IntroductionChun-Yu Tseng
 
Rubypython - 用 ruby 愛上 python
Rubypython - 用 ruby 愛上 pythonRubypython - 用 ruby 愛上 python
Rubypython - 用 ruby 愛上 pythonHonda Dai
 
Testing in python 2.7.3
Testing in python 2.7.3Testing in python 2.7.3
Testing in python 2.7.3Wen Liao
 
MLDM Monday -- Optimization Series Talk
MLDM Monday -- Optimization Series TalkMLDM Monday -- Optimization Series Talk
MLDM Monday -- Optimization Series TalkJerry Wu
 

Viewers also liked (6)

PyConAPAC2014 Tainan.py 介紹
PyConAPAC2014 Tainan.py 介紹PyConAPAC2014 Tainan.py 介紹
PyConAPAC2014 Tainan.py 介紹
 
當資訊科技撞上臺南牛肉湯的那些事兒 @ 2014 NCKU EDiT 科技啓蒙
當資訊科技撞上臺南牛肉湯的那些事兒 @ 2014 NCKU EDiT 科技啓蒙當資訊科技撞上臺南牛肉湯的那些事兒 @ 2014 NCKU EDiT 科技啓蒙
當資訊科技撞上臺南牛肉湯的那些事兒 @ 2014 NCKU EDiT 科技啓蒙
 
PyConAPAC2014 BoF Introduction
PyConAPAC2014 BoF IntroductionPyConAPAC2014 BoF Introduction
PyConAPAC2014 BoF Introduction
 
Rubypython - 用 ruby 愛上 python
Rubypython - 用 ruby 愛上 pythonRubypython - 用 ruby 愛上 python
Rubypython - 用 ruby 愛上 python
 
Testing in python 2.7.3
Testing in python 2.7.3Testing in python 2.7.3
Testing in python 2.7.3
 
MLDM Monday -- Optimization Series Talk
MLDM Monday -- Optimization Series TalkMLDM Monday -- Optimization Series Talk
MLDM Monday -- Optimization Series Talk
 

Similar to Testing in Python @ Kaosiung.py 2014.05.26

简单Pthon教程
简单Pthon教程简单Pthon教程
简单Pthon教程junjun chen
 
Python简明教程
Python简明教程Python简明教程
Python简明教程ingong
 
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)Chen Cheng-Wei
 
The way to continuous delivery
The way to continuous deliveryThe way to continuous delivery
The way to continuous deliveryQiao Liang
 
快快樂樂成為 Coding Ninja (by pytest) @ PyConAPAC2015
快快樂樂成為 Coding Ninja (by pytest) @ PyConAPAC2015快快樂樂成為 Coding Ninja (by pytest) @ PyConAPAC2015
快快樂樂成為 Coding Ninja (by pytest) @ PyConAPAC2015Chun-Yu Tseng
 
2020.04.01 DDD讀書會第三次導讀資料
2020.04.01 DDD讀書會第三次導讀資料2020.04.01 DDD讀書會第三次導讀資料
2020.04.01 DDD讀書會第三次導讀資料hoblues
 
在B2B硬體產業運用 Agile 與 DevOps 的實務與心法
在B2B硬體產業運用 Agile 與 DevOps 的實務與心法在B2B硬體產業運用 Agile 與 DevOps 的實務與心法
在B2B硬體產業運用 Agile 與 DevOps 的實務與心法TIM WANG
 
[MonkeyFest 2018 ] App 開發與 DevOps 上的實踐
[MonkeyFest 2018 ] App 開發與 DevOps 上的實踐[MonkeyFest 2018 ] App 開發與 DevOps 上的實踐
[MonkeyFest 2018 ] App 開發與 DevOps 上的實踐Edward Kuo
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造輕量級容器持續交付平台用 Drone 打造輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台Bo-Yi Wu
 
How to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B serviceHow to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B serviceAlex Su
 
Python introduction and data visualization publish
Python introduction and data visualization publishPython introduction and data visualization publish
Python introduction and data visualization publishcoolzzzx
 
驚呆了!這些 Python 題目刷掉 7 成面試者
驚呆了!這些 Python 題目刷掉 7 成面試者驚呆了!這些 Python 題目刷掉 7 成面試者
驚呆了!這些 Python 題目刷掉 7 成面試者Chun-Yu Tseng
 
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)Rick Hwang
 
11132020_python tutor.pdf
11132020_python tutor.pdf11132020_python tutor.pdf
11132020_python tutor.pdfssuserc840d7
 
2 Python开发工具链
2 Python开发工具链2 Python开发工具链
2 Python开发工具链March Liu
 
Proud Plone on Cloud
Proud Plone on CloudProud Plone on Cloud
Proud Plone on CloudTsungWei Hu
 
A dev ops team's practice in trend micro in agile summit 2018
A dev ops team's practice in trend micro in agile summit 2018A dev ops team's practice in trend micro in agile summit 2018
A dev ops team's practice in trend micro in agile summit 2018Juggernaut Liu
 
Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介Bo-Yi Wu
 

Similar to Testing in Python @ Kaosiung.py 2014.05.26 (20)

简单Pthon教程
简单Pthon教程简单Pthon教程
简单Pthon教程
 
Python简明教程
Python简明教程Python简明教程
Python简明教程
 
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
Ansible & GitLab CI / CD Workshop 101 ( @Agile Tour Taipei 2017)
 
The way to continuous delivery
The way to continuous deliveryThe way to continuous delivery
The way to continuous delivery
 
快快樂樂成為 Coding Ninja (by pytest) @ PyConAPAC2015
快快樂樂成為 Coding Ninja (by pytest) @ PyConAPAC2015快快樂樂成為 Coding Ninja (by pytest) @ PyConAPAC2015
快快樂樂成為 Coding Ninja (by pytest) @ PyConAPAC2015
 
2020.04.01 DDD讀書會第三次導讀資料
2020.04.01 DDD讀書會第三次導讀資料2020.04.01 DDD讀書會第三次導讀資料
2020.04.01 DDD讀書會第三次導讀資料
 
在B2B硬體產業運用 Agile 與 DevOps 的實務與心法
在B2B硬體產業運用 Agile 與 DevOps 的實務與心法在B2B硬體產業運用 Agile 與 DevOps 的實務與心法
在B2B硬體產業運用 Agile 與 DevOps 的實務與心法
 
[MonkeyFest 2018 ] App 開發與 DevOps 上的實踐
[MonkeyFest 2018 ] App 開發與 DevOps 上的實踐[MonkeyFest 2018 ] App 開發與 DevOps 上的實踐
[MonkeyFest 2018 ] App 開發與 DevOps 上的實踐
 
用 Drone 打造 輕量級容器持續交付平台
用 Drone 打造輕量級容器持續交付平台用 Drone 打造輕量級容器持續交付平台
用 Drone 打造 輕量級容器持續交付平台
 
How to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B serviceHow to integrate GitLab CICD into B2B service
How to integrate GitLab CICD into B2B service
 
Python系列1
Python系列1Python系列1
Python系列1
 
Python introduction and data visualization publish
Python introduction and data visualization publishPython introduction and data visualization publish
Python introduction and data visualization publish
 
驚呆了!這些 Python 題目刷掉 7 成面試者
驚呆了!這些 Python 題目刷掉 7 成面試者驚呆了!這些 Python 題目刷掉 7 成面試者
驚呆了!這些 Python 題目刷掉 7 成面試者
 
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
從理想、到現實的距離,開啟品味軟體測試之路 - 台灣軟體工程協會 (20220813)
 
11132020_python tutor.pdf
11132020_python tutor.pdf11132020_python tutor.pdf
11132020_python tutor.pdf
 
Yii phpunit
Yii phpunitYii phpunit
Yii phpunit
 
2 Python开发工具链
2 Python开发工具链2 Python开发工具链
2 Python开发工具链
 
Proud Plone on Cloud
Proud Plone on CloudProud Plone on Cloud
Proud Plone on Cloud
 
A dev ops team's practice in trend micro in agile summit 2018
A dev ops team's practice in trend micro in agile summit 2018A dev ops team's practice in trend micro in agile summit 2018
A dev ops team's practice in trend micro in agile summit 2018
 
Go 語言基礎簡介
Go 語言基礎簡介Go 語言基礎簡介
Go 語言基礎簡介
 

More from Chun-Yu Tseng

5 minutes 介紹台南拍 (2022 ver.)
5 minutes 介紹台南拍 (2022 ver.)5 minutes 介紹台南拍 (2022 ver.)
5 minutes 介紹台南拍 (2022 ver.)Chun-Yu Tseng
 
Tenet: 2020 Taiwan PyCon Host We How
Tenet: 2020 Taiwan PyCon Host We HowTenet: 2020 Taiwan PyCon Host We How
Tenet: 2020 Taiwan PyCon Host We HowChun-Yu Tseng
 
Build and Host Real-world Machine Learning Services from Scratch @ pycontw2019
Build and Host Real-world Machine Learning Services from Scratch @ pycontw2019 Build and Host Real-world Machine Learning Services from Scratch @ pycontw2019
Build and Host Real-world Machine Learning Services from Scratch @ pycontw2019 Chun-Yu Tseng
 
from ai.backend import python @ pycontw2018
from ai.backend import python @ pycontw2018from ai.backend import python @ pycontw2018
from ai.backend import python @ pycontw2018Chun-Yu Tseng
 
Essential TDD @ pycontw2016
Essential TDD @ pycontw2016Essential TDD @ pycontw2016
Essential TDD @ pycontw2016Chun-Yu Tseng
 
從蟒蛇到神龍 - 從 1 接關繼續打造爬蟲程式
從蟒蛇到神龍 - 從 1 接關繼續打造爬蟲程式從蟒蛇到神龍 - 從 1 接關繼續打造爬蟲程式
從蟒蛇到神龍 - 從 1 接關繼續打造爬蟲程式Chun-Yu Tseng
 
Agile x API x Documentation @ NGO [[MOPCON2015]]
Agile x API x Documentation @ NGO [[MOPCON2015]]Agile x API x Documentation @ NGO [[MOPCON2015]]
Agile x API x Documentation @ NGO [[MOPCON2015]]Chun-Yu Tseng
 
程式 x 設計 @ MOPCON 2014
程式 x 設計 @ MOPCON 2014程式 x 設計 @ MOPCON 2014
程式 x 設計 @ MOPCON 2014Chun-Yu Tseng
 
介紹 MOSUT @ 2014.09.26 自由軟體開發與社群發展
介紹 MOSUT @ 2014.09.26 自由軟體開發與社群發展介紹 MOSUT @ 2014.09.26 自由軟體開發與社群發展
介紹 MOSUT @ 2014.09.26 自由軟體開發與社群發展Chun-Yu Tseng
 
OO x Python @ Tainan.py x MOSUT x FP 2014.09.27
OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
OO x Python @ Tainan.py x MOSUT x FP 2014.09.27Chun-Yu Tseng
 
用路人小幫手 x 回報大改造 @ 2014 台南黑客松
用路人小幫手 x 回報大改造 @ 2014 台南黑客松用路人小幫手 x 回報大改造 @ 2014 台南黑客松
用路人小幫手 x 回報大改造 @ 2014 台南黑客松Chun-Yu Tseng
 
暖場 @ Tainan.py 2013.11.30
暖場 @ Tainan.py 2013.11.30 暖場 @ Tainan.py 2013.11.30
暖場 @ Tainan.py 2013.11.30 Chun-Yu Tseng
 
API 文件大亂鬥 @ MOPCON 2013
API 文件大亂鬥 @ MOPCON 2013API 文件大亂鬥 @ MOPCON 2013
API 文件大亂鬥 @ MOPCON 2013Chun-Yu Tseng
 
暖場與 Web 相關的小玩具 @ Tainan.py 2013.09.28
暖場與 Web 相關的小玩具 @ Tainan.py 2013.09.28暖場與 Web 相關的小玩具 @ Tainan.py 2013.09.28
暖場與 Web 相關的小玩具 @ Tainan.py 2013.09.28Chun-Yu Tseng
 

More from Chun-Yu Tseng (15)

5 minutes 介紹台南拍 (2022 ver.)
5 minutes 介紹台南拍 (2022 ver.)5 minutes 介紹台南拍 (2022 ver.)
5 minutes 介紹台南拍 (2022 ver.)
 
Tenet: 2020 Taiwan PyCon Host We How
Tenet: 2020 Taiwan PyCon Host We HowTenet: 2020 Taiwan PyCon Host We How
Tenet: 2020 Taiwan PyCon Host We How
 
Build and Host Real-world Machine Learning Services from Scratch @ pycontw2019
Build and Host Real-world Machine Learning Services from Scratch @ pycontw2019 Build and Host Real-world Machine Learning Services from Scratch @ pycontw2019
Build and Host Real-world Machine Learning Services from Scratch @ pycontw2019
 
from ai.backend import python @ pycontw2018
from ai.backend import python @ pycontw2018from ai.backend import python @ pycontw2018
from ai.backend import python @ pycontw2018
 
導讀 Clean Code
導讀 Clean Code導讀 Clean Code
導讀 Clean Code
 
Essential TDD @ pycontw2016
Essential TDD @ pycontw2016Essential TDD @ pycontw2016
Essential TDD @ pycontw2016
 
從蟒蛇到神龍 - 從 1 接關繼續打造爬蟲程式
從蟒蛇到神龍 - 從 1 接關繼續打造爬蟲程式從蟒蛇到神龍 - 從 1 接關繼續打造爬蟲程式
從蟒蛇到神龍 - 從 1 接關繼續打造爬蟲程式
 
Agile x API x Documentation @ NGO [[MOPCON2015]]
Agile x API x Documentation @ NGO [[MOPCON2015]]Agile x API x Documentation @ NGO [[MOPCON2015]]
Agile x API x Documentation @ NGO [[MOPCON2015]]
 
程式 x 設計 @ MOPCON 2014
程式 x 設計 @ MOPCON 2014程式 x 設計 @ MOPCON 2014
程式 x 設計 @ MOPCON 2014
 
介紹 MOSUT @ 2014.09.26 自由軟體開發與社群發展
介紹 MOSUT @ 2014.09.26 自由軟體開發與社群發展介紹 MOSUT @ 2014.09.26 自由軟體開發與社群發展
介紹 MOSUT @ 2014.09.26 自由軟體開發與社群發展
 
OO x Python @ Tainan.py x MOSUT x FP 2014.09.27
OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27OO x Python  @ Tainan.py x MOSUT x FP 2014.09.27
OO x Python @ Tainan.py x MOSUT x FP 2014.09.27
 
用路人小幫手 x 回報大改造 @ 2014 台南黑客松
用路人小幫手 x 回報大改造 @ 2014 台南黑客松用路人小幫手 x 回報大改造 @ 2014 台南黑客松
用路人小幫手 x 回報大改造 @ 2014 台南黑客松
 
暖場 @ Tainan.py 2013.11.30
暖場 @ Tainan.py 2013.11.30 暖場 @ Tainan.py 2013.11.30
暖場 @ Tainan.py 2013.11.30
 
API 文件大亂鬥 @ MOPCON 2013
API 文件大亂鬥 @ MOPCON 2013API 文件大亂鬥 @ MOPCON 2013
API 文件大亂鬥 @ MOPCON 2013
 
暖場與 Web 相關的小玩具 @ Tainan.py 2013.09.28
暖場與 Web 相關的小玩具 @ Tainan.py 2013.09.28暖場與 Web 相關的小玩具 @ Tainan.py 2013.09.28
暖場與 Web 相關的小玩具 @ Tainan.py 2013.09.28
 

Testing in Python @ Kaosiung.py 2014.05.26