python中unittest加载测试用例的4种方法

  • 方式一:unittest.main()
  • 方式二:runner.run(discover)
    • (1)test1_register代码:
    • (2)test2_open代码:
    • (3)main文件:
    • (4)结果:
  • 方式三:unittest.TextTestRunner().run(suite)
    • (1)test1_register代码:
    • (2)test2_open代码:
    • (3)main文件
    • (4)结果:
  • 方式四:suit = unittest.makeSuite(class name)

方式一: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")

截图:
python中unittest加载测试用例的4种方法_第1张图片

(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)

方式三:
python中unittest加载测试用例的4种方法_第2张图片

(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的方式不一样

你可能感兴趣的:(Python基础,自动化测试)