日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python unitest框架_python单元测试框架Unitest

發布時間:2024/4/13 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python unitest框架_python单元测试框架Unitest 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.unitest簡介

unittest是python內置的單元測試框架,具備編寫用例、組織用例、執行用例、輸出報告等自動化框架的條件。

使用unittest前需要了解該框架的五個概念:

test?case :一個完整的測試單元,執行該測試單元可以完成對某一個問題的驗證,完整體現在:測試前環境準備(setUp),執行測試代碼(run),及測試后環境還原(tearDown);

test?suite :多個測試用例的集合,測試套件或測試計劃;

testLoader:加載TestCase到TestSuite中的,其中loadTestsFrom__()方法用于尋找TestCase,并創建它們的實例,然后添加到TestSuite中,返回TestSuite實例;

test?runner:執行測試用例,并將測試結果保存到TextTestResult實例中,包括運行了多少測試用例, 成功了多少,失敗了多少等信息;

test?fixture:一個測試用例的初始化準備及環境還原,主要是setUp()?和?setDown()方法;

二、unittest工作原理

三、unittest的屬性如下:

['BaseTestSuite', 'FunctionTestCase','SkipTest', 'TestCase', 'TestLoader', 'TestProgram', 'TestResult','TestSuite','TextTestResult','TextTestRunner','_TextTestResult', '__all__','__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__','__package__', '__path__', '__spec__', '__unittest', 'case', 'defaultTestLoader', 'expectedFailure','findTestCases', 'getTestCaseNames', 'installHandler', 'load_tests', 'loader','main', 'makeSuite', 'registerResult','removeHandler', 'removeResult', 'result', 'runner', 'signals', 'skip',?'skipIf', 'skipUnless', 'suite', 'util']

說明:(常用到的類)

(1)unittest.TestCase:TestCase類,所有測試用例類繼承的基本類

class TestAppLogin(unittest.TestCase):

(2)unittest.main():方便將一個單元測試模塊變為可直接運行的測試腳本,main()方法使用TestLoader類來搜索所有包含在該模塊中以“test”命名開頭的測試方法,并自動執行他們。執行方法的默認順序是:根據ASCII碼的順序加載測試用例,數字與字母的順序為:0-9,A-Z,a-z。所以以A開頭的測試用例方法會優先執行,以a開頭會后執行

(3)unittest.TestSuit():unittest框架的TestSuite()類是用來創建測試套件的

(4)unittest.TextTestRunner():unittest框架的TextTextRunner()類,通過該類下面的run()方法來運行suite所組裝的測試用例,入參為suite測試套件

(5)?unittest.defaultTestLoader():defaultTestLoader()類,通過該類下面的discover()方法可自動根據測試目錄start_dir匹配查找測試用例文件(test*.py),并將查找到的測試用例組裝到測試套件,因此可以直接通過run()方法執行discover。用法如下:

discover=unittest.defaultTestLoader.discover(case_dir,pattern="test*.py",top_level_dir=None)

1.discover方法里面有三個參數:

-case_dir:這個是待執行用例的目錄。

-pattern:這個是匹配腳本名稱的規則,test*.py意思是匹配test開頭的所有.py文件。

-top_level_dir:這個是頂層目錄的名稱,一般默認等于None就行了。

(6)unittest.skip():裝飾器,當運行用例時,有些用例可能不想執行等,可用裝飾器暫時屏蔽該條測試用例。一種常見的用法就是比如說想調試某一個測試用例,想先屏蔽其他用例就可以用裝飾器屏蔽

@unittest.skip(reason):skip(reason)裝飾器:無條件跳過裝飾的測試,并說明跳過測試的原因。

@unittest.skipIf(reason):skipIf(condition,reason)裝飾器:條件為真時,跳過裝飾的測試,并說明跳過測試的原因。

@unittest.skipUnless(reason):skipUnless(condition,reason)裝飾器:條件為假時,跳過裝飾的測試,并說明跳過測試的原因。

@unittest.expectedFailure():expectedFailure()測試標記為失敗。

(7)unittest.TestLoader():加載測試用例到測試套件中,提供了一下幾種方法:

suit=unittest.TestLoader().loadTestsFromTestCase(類名)————常用suit=unittest.TestLoader().loadTestsFromMoudule(模塊名)但是我看源碼提示是說在3.5已經移除使用,那就不用這個了

suit=unittest.TestLoader().loadTestsFromName(方法名)

suit=unittest.TestLoader().loadTestsFromNames(方法名,復數形式)

四、TestCase類的屬性:

['__call__', '__class__', '__delattr__','__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__','__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__','__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__','__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__','__subclasshook__', '__weakref__', '_addExpectedFailure', '_addSkip','_addUnexpectedSuccess', '_baseAssertEqual', '_classSetupFailed', '_deprecate','_diffThreshold', '_feedErrorsToResult', '_formatMessage','_getAssertEqualityFunc', '_truncateMessage', 'addCleanup', 'addTypeEqualityFunc','assertAlmostEqual', 'assertAlmostEquals', 'assertCountEqual','assertDictContainsSubset', 'assertDictEqual',?'assertEqual','assertEquals',?'assertFalse','assertGreater', 'assertGreaterEqual','assertIn','assertIs',?'assertIsInstance','assertIsNone',?'assertIsNot','assertIsNotNone', 'assertLess','assertLessEqual', 'assertListEqual', 'assertLogs', 'assertMultiLineEqual','assertNotAlmostEqual', 'assertNotAlmostEquals',?'assertNotEqual','assertNotEquals',?'assertNotIn',?'assertNotIsInstance', 'assertNotRegex','assertNotRegexpMatches', 'assertRaises', 'assertRaisesRegex','assertRaisesRegexp', 'assertRegex', 'assertRegexpMatches','assertSequenceEqual', 'assertSetEqual',?'assertTrue','assertTupleEqual', 'assertWarns', 'assertWarnsRegex', 'assert_','countTestCases', 'debug', 'defaultTestResult', 'doCleanups', 'fail', 'failIf','failIfAlmostEqual', 'failIfEqual', 'failUnless', 'failUnlessAlmostEqual','failUnlessEqual', 'failUnlessRaises', 'failureException', 'id', 'longMessage','maxDiff', 'run','setUp','setUpClass','shortDescription', 'skipTest', 'subTest',?'tearDown','tearDownClass']

說明:(常用到的類)

(1)setup():用于測試用例執行前的初始化工作. 如測試用例中需要訪問數據庫,可以在setUp中建立數據庫連接并進行初始化。如測試用例需要登錄web,可以先實例化瀏覽器

(2)tearDown():用于測試用例執行之后的善后工作。如關閉數據庫連接。關閉瀏覽器

(3)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的一個實例,不是則測試用例通過。

五、TestSuite類的屬性

['__call__', '__class__', '__delattr__','__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__','__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__','__iter__', '__le__', '__lt__', '__module__', '__ne__', '__new__','__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__','__str__', '__subclasshook__', '__weakref__','_addClassOrModuleLevelException', '_cleanup', '_get_previous_module','_handleClassSetUp', '_handleModuleFixture', '_handleModuleTearDown','_removeTestAtIndex', '_tearDownPreviousClass',?'addTest','addTests', 'countTestCases', 'debug', 'run']

常用的方法:

(1)?addTest():addTest()方法是將測試用例添加到測試套件中,如下方,是將test_baidu模塊下的BaiduTest類下的test_login測試方法添加到測試套件。

suite = unittest.TestSuite()

suite.addTest(test_baidu.BaiduTest(' test_login '))

六.TextTestRunner的屬性如下

['__class__', '__delattr__', '__dict__','__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__','__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__','__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__','__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__','_makeResult', 'resultclass',?'run']

說明:(常用到的類)

(1) run():是運行測試套件的測試用例,入參為suite測試套件

runner = unittest.TextTestRunner()

runner.run(suite)

總結

以上是生活随笔為你收集整理的python unitest框架_python单元测试框架Unitest的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。