Python 单元测试

 使用【测试套件】批量执行【测试用例】的步骤:

# 1
import unittest

# 2.加载测试用例所在的模块
from Python_unittest import two_num_add as num_add
from Python_unittest import two_num_multi as num_multi

# 3. 创建测试套件
one_suite = unittest.TestSuite()

# 4.通过模块来批量加载测试用例
# 定义测试加载器对象
one_loader = unttest.TestLoader()
one_suite.addTest(one_loader.loadTestsFromModule(num_multi))  # 执行顺序与套件添加的顺序有关
one_suite.addTest(one_loader.loadTestsFromModule(num_add))

# 5.执行用例
# 创建执行器对象
one_runner = unittest.TextTestRunner()
one_runner.run(one_suite)

 

 使用【discover】

import unittest

# one_suite = unittest.defaultTestLoader.discover(".")    # .代表当前py文件所在的路径
one_suite = unittest.defaultTestLoader.discover(r"C:\Users\KY\PycharmProjects\Python_Automated_Testing_Class_20\Python_0715_unittest")

# 创建执行器对象
one_runner = unittest.TextTestRunner()
one_runner.run(one_suite)

  

在【测试用例】unit.TestCase模块:

setUp(self) 与 tearDown(self) : 每个用例 开始 / 结束 执行时都会调用这个实例方法。

class TestMulti(unittest.TestCase):

    def setUp(self):
        """
        在每一个用例执行之前, 会调用setUp实例方法
        :return:
        """
        log_filename = "record_run_result.txt"
        self.one_file = open(log_filename, mode='a', encoding='utf-8')  # 创建了一个one_file实例属性
        print("打开【{}】文件".format(log_filename))
        self.one_file.write("\n{:=^40s}\n".format("开始执行用例"))  # 对字符串进行格式显示, 为了好看

    def tearDown(self):
        """
        当每一条用例执行结束之后, 会自动调用tearDown实例方法
        :return:
        """
        self.one_file.write("{:=^40s}\n".format("执行用例结束"))
        self.one_file.close()

  

setUpClass(cls)与tearDownClass(cls):所有用例执行 开始 / 结束 时都会调用这个类方法。

class TestMulti(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        """
        在所有用例执行之前, 会调用一次setUpClass类属性
        :return:
        """
        log_filename = "record_run_result.txt"
        cls.one_file = open(log_filename, mode='a', encoding='utf-8')  # 创建了一个one_file实例属性
        print("打开【{}】文件".format(log_filename))
        cls.one_file.write("\n{:=^40s}\n".format("开始执行用例"))  # 对字符串进行格式显示, 为了好看

    @classmethod
    def tearDownClass(cls):
        """
        在所有用例执行之后, 会调用一次tearDownClass类属性
        :return:
        """
        cls.one_file.write("{:=^40s}\n".format("执行用例结束"))
        cls.one_file.close()

  

posted on 2019-07-17 00:21  青柠锦鲤  阅读(294)  评论(0编辑  收藏  举报