使用Unittest進行Python程式單元測試


在本文中,我們將學習使用Python 3.x(或更早版本)中提供的unittest模組進行軟體測試的基礎知識。它允許自動化測試,共享測試的設定和退出程式碼,以及為每個框架進行獨立測試。

在單元測試中,我們使用了各種各樣的面向物件概念。我們將在這裡討論一些主要使用的概念。

  • 測試用例 (Testcase) − 它是一個根據給定的一組輸入做出特定響應的基類。我們使用unittest的基類“TestCase”來實現此操作。

  • 測試套件 (Testsuite) − 用於將測試用例組合在一起並同時執行它們。

  • 測試執行器 (Testrunner) − 它遵循基於結果的任務執行。它參與在執行任務後顯示結果。

  • 測試裝置 (Testfixture) − 它作為相關環境中測試用例的基線。

現在讓我們來看一個基本的例子,看看單元測試是如何工作的。

示例

 線上演示

import unittest
class TestStringMethods(unittest.TestCase):
   def test_upper(self):
      self.assertEqual('TUTOR'.lower(), 'tutor')
   def test_islower(self):
      self.assertTrue('tutor'.islower())
      self.assertFalse('Tutor'.islower())
if __name__ == '__main__':
   unittest.main()

輸出

...
-------------------------------
Ran 2 tests in 0.000s
OK

在這裡,我們以單繼承的形式擴充套件單元測試類。我們在這裡使用了assertEqual()、assertTrue()和assertFalse()等內建方法。

assertEqual() 用於將輸出與結果進行驗證/比較。

assertTrue() 用於驗證給定條件是否為真。


assertFalse() 用於驗證給定條件是否為假。

上述程式碼的輸出可以有三種形式

OK – 這表示所有生成的測試都已成功執行

FAIL – 這表示測試用例失敗,並引發AssertionError異常。

ERROR – 這表示測試引發異常/錯誤。

我們可以使用裝飾器 @unittest.skip(<reason>)

示例

import unittest
class TestString(unittest.TestCase):
   @unittest.skip(“check skipped tests”)
   def test_upper(self):
      self.assertEqual('TUTOR'.lower(), 'tutor')
   def test_islower(self):
      self.assertTrue('tutor'.islower())
      self.assertFalse('Tutor'.islower())
if __name__ == '__main__':
   unittest.main()

輸出

...
------------------------------------------
Ran 2 tests in 0.000s
OK (skipped=2)

結論

在本文中,我們學習了使用Python 3.x(或更早版本)中Unittest模組進行Python單元測試。

更新於:2019年9月27日

134 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.