標籤:log ssm down for pycharm stl cal 測試案例 sed
import unittest
class Test1(unittest.TestCase):
def setUp(self):
print("login")
def test_01(self):
self.assertEqual(1,1)
def test_02(self):
self.assertEqual(2,3)
def tearDown(self):
print("close")
if __name__ == ‘__main__‘:
#verbosity=2主要是詳細的輸出每個測試詳細執行結果
unittest.main(verbosity=2)
執行結果:
login
close
login
close
Failure
Traceback (most recent call last):
File "D:\PyCharm\learnPy\unnitest\test.py", line 11, in test_02
self.assertEqual(2,3)
AssertionError: 2 != 3
(1)每個測試案例以test開頭,否則無法識別
(2)在unittest.main()中加 verbosity
參數可以控制輸出的錯誤報表的詳細程度,預設是 1
,如果設為 0
,則不輸出每一用例的執行結果,即沒有上面的結果中的第1行;如果設為 2
,則輸出詳細的執行結果
(3)setUp和tearDown在每次執行case前後都執行了一次。
如果想要在所有case執行之前準備一次環境,並在所有case執行結束之後再清理環境,我們可以用 setUpClass()
與 tearDownClass()
:
import unittest
class Test1(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("login")
def test_01(self):
self.assertEqual(1,1)
def test_02(self):
self.assertEqual(2,3)
@classmethod
def tearDownClass(cls):
print("close")
if __name__ == ‘__main__‘:
#verbosity=2主要是詳細的輸出每個測試詳細執行結果
unittest.main(verbosity=2)
輸出結果:
login
Failure
Traceback (most recent call last):
File "D:\PyCharm\learnPy\unnitest\test1.py", line 11, in test_02
self.assertEqual(2,3)
AssertionError: 2 != 3
close
如果想跳過那個case,可以使用skip裝飾器
import unittest
class Test1(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("login")
def test_01(self):
self.assertEqual(1,1)
def test_02(self):
self.assertEqual(2,3)
@unittest.skip(‘not run‘)
def test_03(self):
self.assertEqual(4,4)
@classmethod
def tearDownClass(cls):
print("close")
if __name__ == ‘__main__‘:
#verbosity=2主要是詳細的輸出每個測試詳細執行結果
unittest.main(verbosity=2)
這樣執行case如果需要按一定執行順序,如先執行A,再執行B時,需要把case添加到testsuit中,py檔案中含多個class,我們需要批量運行case時,可以把case添加到testsuit
import unittest
class Test(unittest.TestCase):
@classmethod
def setUpClass(cls):
print("befor case")
def test_01(self):
print("01")
def test_02(self):
print("02")
def test_03(self):
print("03")
def test_04(self):
print("04")
@classmethod
def tearDownClass(cls):
print("after case")
if __name__ == ‘__main__‘:
suit=unittest.TestSuite()
# suit.addTest(Test("test_01"))
# suit.addTest(Test("test_02"))
# suit.addTest(Test("test_03"))
#將測試案例按照自己想要的執行順序添加到testsuit中
testcast=[Test("test_01"),Test("test_04"),Test("test_03")]
suit.addTests(testcast)
unittest.TextTestRunner(verbosity=2).run(suit)
執行結果:
befor case
test_01 (__main__.Test) ... ok
01
test_04 (__main__.Test) ... ok
04
test_03 (__main__.Test) ... ok
03
after case
----------------------------------------------------------------------
Ran 3 tests in 0.001s
OK
尋找目前的目錄下test包中的testcast
suite = unittest.defaultTestLoader.discover(basedir + ‘/test/testcase‘)
unittest.TextTestRunner(verbosity=2).run(suit)
python中自動化測試架構unittest