【Python】unittest-4

來源:互聯網
上載者:User

標籤:htm   ble   down   sele   運行   體驗   斷言   路徑   error   

#練習1:import randomimport unittestfrom TestCalc import TestCalcFunctionsclass TestSequenceFunctions(unittest.TestCase):    def setUp(self):        self.seq = range(10)    def tearDown(self):        pass    def test_choice(self):        # 從序列seq中隨機選取一個元素        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)class TestDictValueFormatFunctions(unittest.TestCase):    def setUp(self):        self.seq = range(10)    def tearDown(self):        pass    def test_shuffle(self):        # 隨機打亂原seq的順序        random.shuffle(self.seq)        self.seq.sort()        self.assertEqual(self.seq, range(10))        # 驗證執行函數時拋出了TypeError異常        self.assertRaises(TypeError, random.shuffle, (1, 2, 3))if __name__ == ‘__main__‘:    # 根據給定的測試類別,擷取其中的所有以“test”開頭的測試方法,並返回一個測試套件    suite1 = unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)    suite2 = unittest.TestLoader().loadTestsFromTestCase(TestDictValueFormatFunctions)    suite3 = unittest.TestLoader().loadTestsFromTestCase(TestCalcFunctions)    # 將多個測試類別載入到測試套件中    suite = unittest.TestSuite([suite2, suite1,suite3])  #通過調整suit2和suite1的順序,可以設定執行順序    # 設定verbosity = 2,可以列印出更詳細的執行資訊    unittest.TextTestRunner(verbosity = 2).run(suite)
#練習2:#會產生一個test.html檔案import unittestimport HTMLTestRunnerimport math#被測試類別class Calc(object):    def add(self, x, y, *d):        # 加法計算        result = x + y        for i in d:            result += i        return result    def sub(self, x, y, *d):        # 減法計算        result = x - y        for i in d:            result -= i        return result#單元測試class SuiteTestCalc(unittest.TestCase):    def setUp(self):        self.c = Calc()    @unittest.skip("skipping")    def test_Sub(self):        print "sub"        self.assertEqual(self.c.sub(100, 34, 6), 61, u‘求差結果錯誤!‘)    def testAdd(self):        print "add"        self.assertEqual(self.c.add(1, 32, 56), 89, u‘求和結果錯誤!‘)class SuiteTestPow(unittest.TestCase):    def setUp(self):        self.seq = range(10)    # @unittest.skipIf()    def test_Pow(self):        print "Pow"        self.assertEqual(pow(6, 3), 216, u‘求冪結果錯誤!‘)    def test_hasattr(self):        print "hasattr"    # 檢測math模組是否存在pow屬性        self.assertTrue(hasattr(math, ‘pow1‘), u"檢測的屬性不存在!")if __name__ == "__main__":    suite1 = unittest.TestLoader().loadTestsFromTestCase(SuiteTestCalc)    suite2 = unittest.TestLoader().loadTestsFromTestCase(SuiteTestPow)    suite = unittest.TestSuite([suite1, suite2])    #unittest.TextTestRunner(verbosity=2).run(suite)    filename = "c:\\test.html"  # 定義個報告存放路徑,支援相對路徑。    # 以二進位方式開啟檔案,準備寫    fp = file(filename, ‘wb‘)    # 使用HTMLTestRunner配置參數,輸出報告路徑、報告標題、描述,均可以配     runner = HTMLTestRunner.HTMLTestRunner(stream = fp,        title = u‘測試報告‘, description = u‘測試報告內容‘)    # 運行測試集合    runner.run(suite)
#練習3:import unittestimport random# 被測試類別class MyClass(object):    @classmethod    def sum(self, a, b):        return a + b    @classmethod    def div(self, a, b):        return a / b    @classmethod    def retrun_None(self):        return None# 單元測試類class MyTest(unittest.TestCase):    # assertEqual()方法執行個體    def test_assertEqual(self):        # 斷言兩數之和的結果        try:            a, b = 1, 2            sum = 3            self.assertEqual(a + b, sum, ‘宣告失敗,%s + %s != %s‘ %(a, b, sum))        except AssertionError, e:            print e    # assertNotEqual()方法執行個體    def test_assertNotEqual(self):        # 斷言兩數之差的結果        try:            a, b = 5, 2            res = 1            self.assertNotEqual(a - b, res, ‘宣告失敗,%s - %s != %s‘ %(a, b, res))        except AssertionError, e:            print e    # assertTrue()方法執行個體    def test_assertTrue(self):        # 斷言運算式的為真        try:            self.assertTrue(1 == 1, "運算式為假")        except AssertionError, e:            print e    # assertFalse()方法執行個體    def test_assertFalse(self):        # 斷言運算式為假        try:            self.assertFalse(3 == 2, "運算式為真")        except AssertionError, e:            print e    # assertIs()方法執行個體    def test_assertIs(self):        # 斷言兩變數類型屬於同一對象        try:            a = 12            b = a            self.assertIs(a, b, "%s與%s不屬於同一對象" %(a, b))        except AssertionError, e:            print e    # test_assertIsNot()方法執行個體    def test_assertIsNot(self):        # 斷言兩變數類型不屬於同一對象        try:            a = 12            b = "test"            self.assertIsNot(a, b, "%s與%s屬於同一對象" %(a, b))        except AssertionError, e:            print e    # assertIsNone()方法執行個體    def test_assertIsNone(self):        # 斷言運算式結果為None        try:            result = MyClass.retrun_None()            self.assertIsNone(result, "not is None")        except AssertionError, e:            print e    # assertIsNotNone()方法執行個體    def test_assertIsNotNone(self):        # 斷言運算式結果不為None        try:            result = MyClass.sum(2, 5)            self.assertIsNotNone(result, "is None")        except AssertionError, e:            print e    # assertIn()方法執行個體    def test_assertIn(self):        # 斷言對象B是否包含在對象A中        try:            strA = "this is a test"            strB = "is"            self.assertIn(strA, strB, "%s不包含在%s中" %(strB, strA))        except AssertionError, e:            print e    # assertNotIn()方法執行個體    def test_assertNotIn(self):        # 斷言對象B不包含在對象A中        try:            strA = "this is a test"            strB = "Selenium"            self.assertNotIn(strA, strB, "%s包含在%s中" %(strB, strA))        except AssertionError, e:            print e    # assertIsInstance()方法執行個體    def test_assertIsInstance(self):        # 測試對象A的類型是否是指定的類型        try:            x = MyClass            y = object            self.assertIsInstance(x, y, "%s的類型不是%s".decode("utf-8") %(x, y))        except AssertionError, e:            print e    # assertNotIsInstance()方法執行個體    def test_assertNotIsInstance(self):        # 測試對象A的類型不是指定的類型        try:            a = 123            b = str            self.assertNotIsInstance(a, b, "%s的類型是%s" %(a, b))        except AssertionError, e:            print e    # assertRaises()方法執行個體    def test_assertRaises(self):        # 測試拋出的指定的異常類型        # assertRaises(exception)        with self.assertRaises(ValueError) as cm:            random.sample([1,2,3,4,5], "j")        # 列印詳細的異常資訊        #print "===", cm.exception        # assertRaises(exception, callable, *args, **kwds)        try:            self.assertRaises(ZeroDivisionError, MyClass.div, 3, 0)        except ZeroDivisionError, e:            print e    # assertRaisesRegexp()方法執行個體    def test_assertRaisesRegexp(self):        # 測試拋出的指定異常類型,並用Regex具體驗證        # assertRaisesRegexp(exception, regexp)        with self.assertRaisesRegexp(ValueError, ‘literal‘) as ar:            int("xyz")        # 列印詳細的異常資訊        #print ar.exception        # 列印Regex        #print "re:",ar.expected_regexp        # assertRaisesRegexp(exception, regexp, callable, *args, **kwds)        try:            self.assertRaisesRegexp(ValueError, "invalid literal for.*XYZ‘$",int,‘XYZ‘)        except AssertionError, e:            print eif __name__ == ‘__main__‘:    # 執行單元測試    unittest.main()

 

【Python】unittest-4

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.