Python中unittest用法執行個體_python

來源:互聯網
上載者:User

本文執行個體講述了Python中unittest的用法,分享給大家供大家參考。具體用法分析如下:

1. unittest module包含了編寫運行unittest的功能,自訂的test class都要整合unitest.TestCase類,test method要以test開頭,運行順序根據test method的名字排序,特殊方法:
① setup():每個測試函數運行前運行
② teardown():每個測試函數運行完後執行
③ setUpClass():必須使用@classmethod 裝飾器,所有test運行前運行一次
④ tearDownClass():必須使用@classmethod裝飾器,所有test運行完後運行一次

2. 範例程式碼:

#檔案名稱runtest.pyimport randomimport unittestclass TestSequenceFunctions(unittest.TestCase):  def setUp(self):    self.seq = list(range(10))  def test_shuffle(self):    # make sure the shuffled sequence does not lose any elements    random.shuffle(self.seq)    self.seq.sort()    self.assertEqual(self.seq, list(range(10)))    # should raise an exception for an immutable sequence    self.assertRaises(TypeError, random.shuffle, (1,2,3))  def test_choice(self):    element = random.choice(self.seq)    self.assertTrue(element in self.seq)  def test_sample(self):    with self.assertRaises(ValueError):      random.sample(self.seq, 20)    for element in random.sample(self.seq, 5):      self.assertTrue(element in self.seq)if __name__ == '__main__':  unittest.main()

3.運行方式:在命令列直接運行這個runtest.py

可以使用unitest.skip裝飾器族跳過test method或者test class,這些裝飾器包括:
① @unittest.skip(reason):無條件跳過測試,reason描述為什麼跳過測試
② @unittest.skipif(conditition,reason):condititon為true時跳過測試
③ @unittest.skipunless(condition,reason):condition不是true時跳過測試

可以自訂skip decorator

#這是一個自訂的skip decorratordef skipUnlessHasattr(obj, attr):  if hasattr(obj, attr):    return lambda func: func  return unittest.skip("{!r} doesn't have {!r}".format(obj, attr))

skip decorator範例程式碼:

class MyTestCase(unittest.TestCase):  @unittest.skip("demonstrating skipping")  def test_nothing(self):    self.fail("shouldn't happen")  @unittest.skipIf(mylib.__version__ < (1, 3),           "not supported in this library version")  def test_format(self):    # Tests that work for only a certain version of the library.    pass  @unittest.skipUnless(sys.platform.startswith("win"), "requires Windows")  def test_windows_support(self):    # windows specific testing code    pass@unittest.skip("showing class skipping")class MySkippedTestCase(unittest.TestCase):  def test_not_run(self):    pass

4.expected failure:使用@unittest.expectedFailure裝飾器,如果test失敗了,這個test不計入失敗的case數目

希望本文所述對大家Python程式設計的學習有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.