13.4. 正面測試 (Testing for success) 13.5. 負面測試 (Testing for failure) 測試有效輸入還不夠,還必需測試無效輸入,並且要按預期失敗形式執行 13.6. 完備性檢測 (Testing for sanity) 測試的一條基本規則:每一個測試用例只回答一個問題。 另外一個基本規則:每一個測試用例必須能夠與其餘測試用例隔離工做,每一個測試用例是一個「孤島」,下降測試間的藕合程序員
當全部測試都經過了,中止編程。正則表達式
不要怕麻煩,今天的單元測試就是明天的迴歸測試 (regression test) 15.2. 應對需求變化 全面的單元測試意味着沒必要依賴於程序員的一面之詞 15.3. 重構編程
<pre> romanNumeralPattern = re.compile(''' ^ # beginning of string M{0,4} # thousands - 0 to 4 M's (CM|CD|D?C{0,3}) # hundreds - 900 (CM), 400 (CD), 0-300 (0 to 3 C's), # or 500-800 (D, followed by 0 to 3 C's) (XC|XL|L?X{0,3}) # tens - 90 (XC), 40 (XL), 0-30 (0 to 3 X's), # or 50-80 (L, followed by 0 to 3 X's) (IX|IV|V?I{0,3}) # ones - 9 (IX), 4 (IV), 0-3 (0 to 3 I's), # or 5-8 (V, followed by 0 to 3 I's) $ # end of string ''', re.VERBOSE) </pre>性能
15.4. 後記單元測試
15.5. 小結 單元測試是一個強大的概念,使用得當的話既能夠減小維護成本又能夠增長長期項目的靈活性。一樣重要的是要意識到單元測試並非「靈丹妙藥」,也不是「銀彈」。編寫好的測試用例很困難,保持其更新更須要磨練。單元測試不是其它形式測試的替代品,好比說功能性測試、集成測試以及可用性測試。但它切實可行且功效明顯,一旦相識,你會反問爲何以往沒有應用它。測試