python-测试-unittest简要入门

项目结构

  1. 包名需要以 test 开头

  2. python 文件需要以 test_ 开头

例如

  1. 测试类以 Test 开头(需要继承 unittest.TestCase 类),内部的测试函数以 test 开头命名

常用函数

  • setUpClass 和 tearDownClass 分别用于测试类的开头和结尾要执行的步骤, 需要 @classmethod 注释
  • setUp 和 tearDown 分别用于每个测试函数的开头和结尾要执行的步骤
  • 更多特性: unittest 类与函数

常用测试函数

# 用于测试 a 和 b 的值是否相等
self.assertEqual(a, b)
# 测试 错误是否成功捕捉
 with self.assertRaises(ValueError):
    raise ValueError('Value Err')
# 满足条件, 跳过测试
@unittest.skipIf(sys.platform == 'win32',
                 "测试不运行在 windows")
def test_win(self):
    print('test windows')

跳过指定python版本

# 满足条件, 跳过测试
@unittest.skipIf(sys.version_info < (3, 7),
                 "只运行在 python 3.7+")
def test_py39(sel/f):
    print('test python 3.7+')

其他方式: unittest 跳过测试的方法

运行

命令行运行测试模块

python -m unittest test_module

命令行运行测试类

python -m unittest test_module.TestClass

命令行运行测试类的测试函数

python -m unittest test_module.TestClass.test_method

更多命令行运行详情: unittest 命令行接口

实验

import sys
import unittest


class TestFunc(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print('测试类开始')

    @classmethod
    def tearDownClass(cls):
        print('测试类结束')

    def setUp(self):
        print('测试函数开始')

    def tearDown(self):
        print('测试函数结束')

    def test_init(self):
        a = 1
        self.assertEqual(a, 1)  # 推荐
        self.assertTrue(a == 1)

        # 测试 错误是否成功捕捉
        with self.assertRaises(ValueError):
            raise ValueError('Value Err')

    # 满足条件, 跳过测试
    @unittest.skipIf(sys.platform == 'win32',
                     "测试不运行在 windows")
    def test_win(self):
        print('test windows')

    # 满足条件, 跳过测试
    @unittest.skipIf(sys.version_info < (3, 7),
                     "只运行在 python 3.7+")
    def test_py39(self):
        print('test python 3.7+')

官方中文文档: unittest 单元测试框架

posted @ 2022-07-16 22:40  漫漫长夜何时休  阅读(85)  评论(1编辑  收藏  举报