標籤:__str__ .com trunc sequence exception previous find 最簡 web
最簡單的方式不解釋
import unittest
unittest.main()
一、unittest模組的各個屬性說明
點擊返回目錄
先來聊一聊unittest模組的各個屬性,所謂知己知彼方能百戰百勝,瞭解unittest的各個屬性,對於後續編寫用例有很大的協助。
1.unittest的屬性如下:
[‘BaseTestSuite‘, ‘FunctionTestCase‘, ‘SkipTest‘, ‘TestCase‘, ‘TestLoader‘, ‘TestProgram‘, ‘TestResult‘, ‘TestSuite‘, ‘TextTestResult‘, ‘TextTestRunner‘, ‘_TextTestResult‘, ‘__all__‘, ‘__builtins__‘, ‘__doc__‘, ‘__file__‘, ‘__name__‘, ‘__package__‘, ‘__path__‘, ‘__unittest‘, ‘case‘, ‘defaultTestLoader‘, ‘expectedFailure‘, ‘findTestCases‘, ‘getTestCaseNames‘, ‘installHandler‘, ‘loader‘, ‘main‘, ‘makeSuite‘, ‘registerResult‘, ‘removeHandler‘, ‘removeResult‘, ‘result‘, ‘runner‘, ‘signals‘, ‘skip‘, ‘skipIf‘, ‘skipUnless‘, ‘suite‘, ‘util‘]
說明:
unittest.TestCase:TestCase類,所有測試案例類繼承的基本類。
class BaiduTest(unittest.TestCase):
unittest.main():使用她可以方便的將一個單元測試模組變為可直接啟動並執行測試指令碼,main()方法使用TestLoader類來搜尋所有包含在該模組中以“test”命名開頭的測試方法,並自動執行他們。執行方法的預設順序是:根據ASCII碼的順序載入測試用例,數字與字母的順序為:0-9,A-Z,a-z。所以以A開頭的測試案例方法會優先執行,以a開頭會後執行。
unittest.TestSuite():unittest架構的TestSuite()類是用來建立測試套件的。
unittest.TextTextRunner():unittest架構的TextTextRunner()類,通過該類下面的run()方法來運行suite所組裝的測試案例,入參為suite測試套件。
unittest.defaultTestLoader(): defaultTestLoader()類,通過該類下面的discover()方法可自動更具測試目錄start_dir匹配尋找測試案例檔案(test*.py),並將尋找到的測試案例組裝到測試套件,因此可以直接通過run()方法執行discover。用法如下:
discover=unittest.defaultTestLoader.discover(test_dir, pattern=‘test_*.py‘)
unittest.skip():裝飾器,當運行用例時,有些用例可能不想執行等,可用裝飾器暫時屏蔽該條測試案例。一種常見的用法就是比如說想調試某一個測試案例,想先屏蔽其他用例就可以用裝飾器屏蔽。
@unittest.skip(reason): skip(reason)裝飾器:無條件跳過裝飾的測試,並說明跳過測試的原因。
@unittest.skipIf(reason): skipIf(condition,reason)裝飾器:條件為真時,跳過裝飾的測試,並說明跳過測試的原因。
@unittest.skipUnless(reason): skipUnless(condition,reason)裝飾器:條件為假時,跳過裝飾的測試,並說明跳過測試的原因。
@unittest.expectedFailure(): expectedFailure()測試標記為失敗。
2.TestCase類的屬性如下:
[‘__call__‘, ‘__class__‘, ‘__delattr__‘, ‘__dict__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__getattribute__‘, ‘__hash__‘, ‘__init__‘, ‘__module__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘__weakref__‘, ‘_addSkip‘, ‘_baseAssertEqual‘, ‘_classSetupFailed‘, ‘_deprecate‘, ‘_diffThreshold‘, ‘_formatMessage‘, ‘_getAssertEqualityFunc‘, ‘_truncateMessage‘, ‘addCleanup‘, ‘addTypeEqualityFunc‘, ‘assertAlmostEqual‘, ‘assertAlmostEquals‘, ‘assertDictContainsSubset‘, ‘assertDictEqual‘, ‘assertEqual‘, ‘assertEquals‘, ‘assertFalse‘, ‘assertGreater‘, ‘assertGreaterEqual‘, ‘assertIn‘, ‘assertIs‘, ‘assertIsInstance‘, ‘assertIsNone‘, ‘assertIsNot‘, ‘assertIsNotNone‘, ‘assertItemsEqual‘, ‘assertLess‘, ‘assertLessEqual‘, ‘assertListEqual‘, ‘assertMultiLineEqual‘, ‘assertNotAlmostEqual‘, ‘assertNotAlmostEquals‘, ‘assertNotEqual‘, ‘assertNotEquals‘, ‘assertNotIn‘, ‘assertNotIsInstance‘, ‘assertNotRegexpMatches‘, ‘assertRaises‘, ‘assertRaisesRegexp‘, ‘assertRegexpMatches‘, ‘assertSequenceEqual‘, ‘assertSetEqual‘, ‘assertTrue‘, ‘assertTupleEqual‘, ‘assert_‘, ‘countTestCases‘, ‘debug‘, ‘defaultTestResult‘, ‘doCleanups‘, ‘fail‘, ‘failIf‘, ‘failIfAlmostEqual‘, ‘failIfEqual‘, ‘failUnless‘, ‘failUnlessAlmostEqual‘, ‘failUnlessEqual‘, ‘failUnlessRaises‘, ‘failureException‘, ‘id‘, ‘longMessage‘, ‘maxDiff‘, ‘run‘, ‘setUp‘, ‘setUpClass‘, ‘shortDescription‘, ‘skipTest‘, ‘tearDown‘, ‘tearDownClass‘]
說明:
setUp():setUp()方法用於測試案例執行前的初始化工作。如測試案例中需要訪問資料庫,可以在setUp中建立資料庫連接並進行初始化。如測試案例需要登入web,可以先執行個體化瀏覽器。
tearDown():tearDown()方法用於測試案例執行之後的善後工作。如關閉資料庫連接。關閉瀏覽器。
assert*():一些斷言方法:在執行測試案例的過程中,最終用例是否執行通過,是通過判斷測試得到的實際結果和預期結果是否相等決定的。
assertEqual(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a和b是否相等,相等則測試案例通過。
assertNotEqual(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a和b是否相等,不相等則測試案例通過。
assertTrue(x,[msg=‘測試失敗時列印的資訊‘]):斷言x是否True,是True則測試案例通過。
assertFalse(x,[msg=‘測試失敗時列印的資訊‘]):斷言x是否False,是False則測試案例通過。
assertIs(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a是否是b,是則測試案例通過。
assertNotIs(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a是否是b,不是則測試案例通過。
assertIsNone(x,[msg=‘測試失敗時列印的資訊‘]):斷言x是否None,是None則測試案例通過。
assertIsNotNone(x,[msg=‘測試失敗時列印的資訊‘]):斷言x是否None,不是None則測試案例通過。
assertIn(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a是否在b中,在b中則測試案例通過。
assertNotIn(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a是否在b中,不在b中則測試案例通過。
assertIsInstance(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a是是b的一個執行個體,是則測試案例通過。
assertNotIsInstance(a,b,[msg=‘測試失敗時列印的資訊‘]):斷言a是是b的一個執行個體,不是則測試案例通過。
3.TestSuite類的屬性如下:(組織用例時需要用到)
[‘__call__‘, ‘__class__‘, ‘__delattr__‘, ‘__dict__‘, ‘__doc__‘, ‘__eq__‘, ‘__format__‘, ‘__getattribute__‘, ‘__hash__‘, ‘__init__‘, ‘__iter__‘, ‘__module__‘, ‘__ne__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘__weakref__‘, ‘_addClassOrModuleLevelException‘, ‘_get_previous_module‘, ‘_handleClassSetUp‘, ‘_handleModuleFixture‘, ‘_handleModuleTearDown‘, ‘_tearDownPreviousClass‘, ‘_tests‘, ‘addTest‘, ‘addTests‘, ‘countTestCases‘, ‘debug‘, ‘run‘]
說明:
addTest(): addTest()方法是將測試案例添加到測試套件中,如下方,是將test_baidu模組下的BaiduTest類下的test_baidu測試案例添加到測試套件。
suite = unittest.TestSuite()suite.addTest(test_baidu.BaiduTest(‘test_baidu‘))
4.TextTextRunner的屬性如下:(組織用例時需要用到)
[‘__class__‘, ‘__delattr__‘, ‘__dict__‘, ‘__doc__‘, ‘__format__‘, ‘__getattribute__‘, ‘__hash__‘, ‘__init__‘, ‘__module__‘, ‘__new__‘, ‘__reduce__‘, ‘__reduce_ex__‘, ‘__repr__‘, ‘__setattr__‘, ‘__sizeof__‘, ‘__str__‘, ‘__subclasshook__‘, ‘__weakref__‘, ‘_makeResult‘, ‘buffer‘, ‘descriptions‘, ‘failfast‘, ‘resultclass‘, ‘run‘, ‘stream‘, ‘verbosity‘]
說明:
run(): run()方法是運行測試套件的測試案例,入參為suite測試套件。
runner = unittest.TextTestRunner()runner.run(suite)
python unittest用例執行方式