learn python in 30 min - 4

52
Learn Python in 30 min - 4 cmj 1

Upload: chia-hao-tsai

Post on 09-Aug-2015

97 views

Category:

Technology


1 download

TRANSCRIPT

Learn Python in 30 min - 4cmj

1

接下來,就是

2

3

‧ 有以下考量,設計出一個堪用的程式

‧ 可閱讀性

‧ 彈性 / 可擴充性

‧ 執行效率 / 開發效率

4

從頭開始

5

‧ 設計一個可以執行的 binary:SimpleTest

‧ 支援設定檔

‧ 控制測試

‧ 記錄結果

6

‧ 設計一個可以執行的 binary:SimpleTest

‧ 支援設定檔 控制測試參數

‧ 控制測試

‧ 記錄結果

7

‧ 設計一個可以執行的 binary:SimpleTest

‧ 支援設定檔

‧ 控制測試 決定執行哪些測試

‧ 記錄結果

8

‧ 設計一個可以執行的 binary:SimpleTest

‧ 支援設定檔

‧ 控制測試

‧ 記錄結果 儲存結果

9

‧ Functional SPEC 已經有大架構了:三個大功能

‧ 開發流程?

‧ Top-Down

‧ Bottom-Up

10

開發習慣,跟人有關~

11

‧ Day 0

‧ 建議先寫開始的進入點 (執行的 binary)

‧ 設計所有可能的功能

‧ 確定這是你要的

12

‧ SimpleTest -h

‧ 顯示所有操作

‧ 這也暗示你:我只會做這些事情

‧ 處理 User Input 是很累人的

13

還好我們有 argparse

14

15

16

Load 函式庫

17

設定可能參數

18

Parser 指令

這樣就有一個空有外表的成品

19

‧ 接下來,讀取設定檔

‧ 格式有很多種:config / JSON / XML / YAML

‧ 挑自己喜歡的,反正 Python 都有支援

‧ 這也是說 Python 不支援的不要挑 >.^

20

簡單的 yaml 例子

21

這樣,程式就可以讀設定檔

22

‧ 要控制測試項目:你就要決定怎樣控制

‧ For 迴圈不錯? (也就是用 List)

‧ 但是測試都有名稱啊。。。

‧ 想要名稱當 Key 又想要存一堆東西?

23

‧ 要控制測試項目:你就要決定怎樣控制

‧ For 迴圈不錯? (也就是用 List)

‧ 但是測試都有名稱啊。。。

‧ 想要名稱當 Key 又想要存一堆東西? Dict

24

‧ 所以需要有一個物件 (至少是 Dict)

‧ 紀錄目前所有的測試

‧ 當 SimpleTest 執行的時候,選擇執行

‧ 但是我很想自動,不想手動加測試項目

25

當一個 Package

26

‧ 使用 from testcases import *

‧ 這樣就可以撈所有 testcases 下的 物件

‧ 同理,也可以 from testcases import Test

‧ dir(Test) 列出所有能力

‧ Package 資料夾下一定要有 __init__.py

‧ 裡面 import 所需要的測試 case

27

程式架構

28

‧ 這樣只要寫拼命寫 Test Case

‧ 用 Load Package 的方式拿到所有測試 case

‧ 接下來又改寫原本的 SimpleTest

29

30

31

需要測試的項⽬目

32

執⾏行測試每個項⽬目

接下來,紀錄結果

33

‧ 要記錄檔案:你不會想要頻繁的開關

‧ 所以要把 fd 往下傳

‧ 所有測試使用同一個 fd 來記錄結果

‧ 測試結束在關檔

34

等等!

35

‧ 我們做出這麼多元件,要一起跑才是所需要

‧ 那如何

‧ 組合元件?

‧ 互動?

36

‧ 執行流程為何?

‧ User 決定執行指令 (設定檔 / 測試項目)

‧ 確定設定檔、測試項目是否有效

‧ 開啟 (記錄) 檔案,傳遞測試項目

‧ 測試每個指定的項目

37

‧ 執行流程為何?

‧ User 決定執行指令 (設定檔 / 測試項目)

‧ 確定設定檔、測試項目是否有效

‧ 開啟 (記錄) 檔案,傳遞測試項目

‧ 測試每個指定的項目

38

‧ 執行流程為何?

‧ User 決定執行指令 (設定檔 / 測試項目)

‧ 確定設定檔、測試項目是否有效

‧ 開啟 (記錄) 檔案,傳遞測試項目

‧ 測試每個指定的項目

39

‧ 執行流程為何?

‧ User 決定執行指令 (設定檔 / 測試項目)

‧ 確定設定檔、測試項目是否有效

‧ 開啟 (記錄) 檔案,傳遞測試項目

‧ 測試每個指定的項目

40

開檔 / 縮排 / 傳入 fd

41

接下來,撰寫測試邏輯

42

好像之前寫過了

43

44

測試寫入 / 檔案內容

45

但是沒有用到操作遠端機器

46

‧ 先假設

‧ 你已經寫好 client ro 檔案

‧ 提供一個能力:檢查檔案路徑是否存在

‧ 名稱是:fileExist()

47

48

最後,記得

49

不要白費你的努力

50

‧ Ref

‧ https://docs.python.org/2/library/optparse.html

‧ http://pyyaml.org/wiki/PyYAMLDocumentation

51

Thanks for your attention

52