unittest的实现技术点

1. 新建一个类并继承unittest.TestCase

import unittest

class TestApi(unittest.TestCase):
    def test_mashang(self):
        print("mashang soft testing...")
    def test_baili(self):
        print("baili soft testing...")

2. 测试用例必须以test_开头

3. 执行测试用例:执行方法与用例过滤

使用 python -m unittest 命令可以运行 Python 的单元测试框架 unittest。这是一个方便的方式来执行测试,特别是当你想要在命令行中运行测试时。

python -m:以命令行的方式运行

-v:显示详细信息

-k:通过通配符匹配的方式去查找用例

4、两种运行方式:unittest和main

5、TestSuite\TestLoader\TestRunner

测试套件:整理测试用例形成一个集合

测试加载器:加载测试用例套件或用例

测试运行器:运行测试用例

if __name__ == '__main__':
    # 创建测试套件
    suite = unittest.TestSuite()
    # 把测试用例加载到套件里
    suite.addTest(TestApi('test_mashang'))
    suite.addTest(TestApi('test_baili'))
    # 也可以这样写
    testcases = [TestApi('test_mashang'), TestApi('test_baili')]
    suite.addTest(testcases)
    # 加载一个目录下所有的测试用例
    suite = unittest.defaultTestLoader.discover("./testcases", pattern='test_*.py')
    # 执行时一定要指定套件
    unittest.main(defaultTest='suite')

unittest.TestSuite() 是 Python unittest 框架中的一个类,用于将多个测试用例组合在一起,以便可以作为一个整体来执行。这种功能特别适合于需要选择性地运行特定一组测试的场景,而不是运行整个测试模块中的所有测试。

功能和优势

组合测试用例:你可以将多个测试用例或测试类添加到一个测试套件中,从而一次性运行它们。

选择性执行:通过创建不同的测试套件,可以灵活地选择哪些测试需要执行,便于在不同情况下运行相关的测试。

组织测试:有助于将测试逻辑组织得更清晰,特别是在大型项目中,可以按照功能模块或测试类型进行分组。

自定义测试运行:可以根据需要定制测试的执行顺序和报告方式。

6、夹具(Fixtures):setUp() 和 tearDown(

在 Python 的 unittest 框架中,夹具(Fixtures)是一种用于设置和清理测试环境的机制。它们允许你在测试运行前后执行特定的操作,确保测试的可靠性和隔离性。

夹具的功能

设置测试环境:在测试开始之前,夹具可以用来创建和配置测试所需的环境,例如打开数据库连接、创建临时文件等。

清理资源:测试结束后,夹具可以用于清理或恢复环境,比如关闭数据库连接、删除临时文件等,以确保不影响后续测试。

代码复用:通过定义夹具,可以避免在每个测试用例中重复相同的设置和清理代码,提高代码的可维护性和可读性。

控制测试的独立性:使用夹具可以确保每个测试在干净的环境中运行,避免测试之间的相互影响。

使用方式如下:

import unittest

class MyUnit(unittest.TestCase):
    def setUp(self):
        # 通用的初始化逻辑
        self.common_resource = "Initialized"

    def tearDown(self):
        # 通用的清理逻辑
        self.common_resource = None

class MyTest(MyUnit):
    def test_example(self):
        self.assertEqual(self.common_resource, "Initialized")

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

执行用例时如何忽略某些用例

class TestApi(unittest.TestCase):

    @unittest.skip(reason="直接通过")
    def test_mashang(self):
        printf("mashang soft testing...")
    
    @unittest.skipIf(age<=18, reason="未成年")
    def test_baili(self):
        print("baili soft testing...")

断言

什么是断言:使用代码自动判断测试程序执行结果与预期结果是否相符

断言的作用:提高测试效率;实现自动化测试

说明:unittest中提供了非常丰富的断言方法

复杂的断言方法在自动化测试中几乎使用不到

断言方法已经在unittest.TestCase类中定义了,我们自定义的类已经继承了TestCase父类,所以在测试方法中直接调用父类中的断言方法即可

assertEqual(expected,actual,msg=None)

Equal:相等

expected:预期结果

actual:实际结果

判断实际结果与预期结果是否相等,相等则用例通过,不相等则抛出异常,用例不通过

assertNotEqual(excepted,actual,msg=None)

NotEqual:不相等

判断实际结果与预期结果是否相等,相等则用例不通过,抛出异常;不相等则用例通过

检查 a 是否等于 b。

self.assertEqual(1 + 1, 2)

assertNotEqual(a, b)

检查 a 是否不等于 b。

self.assertNotEqual(1 + 1, 3)

assertTrue(x)

检查 x 是否为真(True)。

self.assertTrue(1 + 1 == 2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我心荡漾2.0

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值