python测试 unittest 实践要点

目录

命名篇

命令行篇

测试断言篇

常见测试断言

特殊测试断言

测试前后篇

在每个测试方法前后执行

在每个测试类的所有方法前后执行

不运行测试篇

参考

命名篇

测试模块应以 test_开头

测试类应以Test开头或结尾

测试类中的测试方法应该以test_开头

命令行篇

测试的粒度从大到小一共有四种:所有的测试模块 > 某个测试模块 > 某个测试类 > 某个测试方法

对应的命令行如下

注:需要cd进入测试模块所在的目录

python -m unittest

python -m unittest test_module1 test_module2

python -m unittest test_module.TestClass

python -m unittest test_module.TestClass.test_method

也可以在任意位置运行测试文件

python -m unittest tests/test_something.py

P.S. 测试文件和测试模块是等价的,只不过文件之间的层级用 / ,而模块之间的层级用 .

测试断言篇

常见测试断言

python测试 unittest 实践要点_第1张图片

特殊测试断言

assertRaises必须作为上下文管理器使用

with self.assertRaises(SomeException):
    do_something()

测试前后篇

在每个测试方法前后执行

通过定义setUp函数和tearDown函数完成

class TestRepair(unittest.TestCase):
    def setUp(self):
        print("\n测试开始了")

    def tearDown(self):
        print("测试结束了")

    def test_example1(self):
        self.assertNotEqual(1, 2)

    def test_example2(self):
        self.assertNotEqual(3, 4)

该测试类的输出是


测试开始了
测试结束了
.
测试开始了
测试结束了

在每个测试类的所有方法前后执行

通过定义setUpClass函数和tearDownClass函数完成(必须使用@classmethod装饰器)

class TestRepair(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("\n测试开始了")

    @classmethod
    def tearDownClass(cls):
        print("测试结束了")

    def test_example1(self):
        self.assertNotEqual(1, 2)

    def test_example2(self):
        self.assertNotEqual(3, 4)

该测试类的输出是


测试开始了
..测试结束了

不运行测试篇

使用装饰器语句 @unittest,skipIf(arg1,arg2)

@unittest.skipIf(sys.version_info < (3,9),"only support 3.9+")
def test_example2(self):
    self.assertNotEqual(3, 4)

参考

1. 码农高天的b站视频

【python】十分钟极速入门unittest——写测试其实很简单!一套实践就够了!_哔哩哔哩_bilibili

2. python unittest 官方文档

unittest --- 单元测试框架 — Python 3.9.17 中文文档

你可能感兴趣的:(软件测试技术,Python,python,unittest)