1. 程式人生 > >python中unittest載入測試用例的4種方法

python中unittest載入測試用例的4種方法

方式一:unittest.main()

import unittest

class TEST1(unittest.TestCase):

    def setUp(self):
        print("\n")
        print("test_case_start")

    def test_1_step(self):
        print("test_1_step_start")

    def test_2_step(self):
        print("test_2_step_start")

if __name__ == '__main__':
    unittest.main()

結果:

test_case_start
test_1_step_start

test_case_start
test_2_step_start

方式二:runner.run(discover)

(1)test1_register程式碼:

import unittest

class TEST1(unittest.TestCase):

    def setUp(self):
        print("\n")
        print("test_case_start")


    def test_1_step(self):
        print("test_1_step_start"
) def test_2_step(self): print("test_2_step_start")

(2)test2_open程式碼:

import unittest

class TEST2(unittest.TestCase):

    def setUp(self):
        print("\n")
        print("test2_case_start")

    def test2_1_step(self):
        print("test2_1_step_start")

    def test2_2_step(self)
:
print("test2_2_step_start")

截圖:
這裡寫圖片描述

(3)main檔案:

import os
import unittest

cash_path = os.path.join(os.getcwd(),'../test_case')

print('檔案地址:', os.getcwd())
print("cash_path:", cash_path)

discover = unittest.defaultTestLoader.discover(cash_path,
                                               pattern="test*.py",
                                               top_level_dir=None)
# top_level_dir : 這個是頂層目錄的名稱,一般預設等於None就行了

if __name__ == '__main__':
    runner = unittest.TextTestRunner()
    runner.run(discover)

(4)結果:

檔案地址: D:\MyProjects\haolyy_new\main
cash_path: D:\MyProjects\haolyy_new\main\../test_case

test_case_start
test_1_step_start


test_case_start
test_2_step_start


test2_case_start
test2_1_step_start

test2_case_start
test2_2_step_start

方式三:unittest.TextTestRunner().run(suite)

(1)test1_register程式碼:

import unittest

class TEST1(unittest.TestCase):

    def setUp(self):
        print("\n")
        print("test_case_start")

    def test_1_step(self):
        print("test_1_step_start")

    def test_2_step(self):
        print("test_2_step_start")

def test1_suit():
    suite = unittest.TestSuite()
    suite.addTest(TEST1("test_1_step"))
    suite.addTest(TEST1("test_2_step"))
    unittest.TextTestRunner().run(suite)

(2)test2_open程式碼:

import unittest

class TEST2(unittest.TestCase):

    def setUp(self):
        print("\n")
        print("test2_case_start")

    def test2_1_step(self):
        print("test2_1_step_start")

    def test2_2_step(self):
        print("test2_2_step_start")

def test2_suit():
    suite = unittest.TestSuite()
    suite.addTest(TEST2("test2_1_step"))
    suite.addTest(TEST2("test2_2_step"))
    unittest.TextTestRunner().run(suite)

方式三:
這裡寫圖片描述

(3)main檔案

from test1_register import *
from test2_open import *

if __name__ == '__main__':
    test1_suit()
    test2_suit()

(4)結果:

test_case_start
test_1_step_start

test_case_start
test_2_step_start

test2_case_start
test2_1_step_start

test2_case_start
test2_2_step_start

方式四:suit = unittest.makeSuite(class name)

import unittest


class AlienTest1(unittest.TestCase):

    def test_1_run(self):
        print("hello world_1")

    def test_2_run(self):
        print("hello world_2")

    def test_3_run(self):
        print("hello world_3")


class AlienTest2(unittest.TestCase):

    def test_4_run(self):
        print("hello world_4")

    def test_5_run(self):
        print("hello world_5")

    def test_6_run(self):
        print("hello world_6")


if __name__ == '__main__':
    suite1 = unittest.makeSuite(AlienTest1)
    suite2 = unittest.makeSuite(AlienTest2)

    unittest.TextTestRunner().run(suite1)
    unittest.TextTestRunner().run(suite2)

最終結果:

hello world_1
hello world_2
hello world_3
hello world_4
hello world_5
hello world_6

其實這個方法和方法二類似,只是建立suite的方式不一樣