python中自動化測試架構unittest

來源:互聯網
上載者:User

標籤: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

相關文章

聯繫我們

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