unittest执行测试用例有哪几种方式?我整理好几种呢

前言

 在我们实际工作当中,我们经常会用到unittest框架来执行用例,进行冒烟测试。如果你不懂冒烟测试,传送门链接:unittest和pytest冒烟测试哪家强?

通过unittest.main()来执行测试用例的方式:
import unittest 
 
class UCTestCase(unittest.TestCase):
    def setUp(self):
        #测试前需执行的操作
        .....
    def tearDown(self):
        #测试用例执行完后所需执行的操作
     
    # 测试用例1
    def test1(self):
        #具体的测试脚本
      
    # 测试用例2
    def test2(self):
        #具体的测试脚本
       
if __name__ == "__main__":
	# 运行所有的用例
    unittest.main()

如果对软件测试、接口测试、自动化测试、持续集成、面试经验。感兴趣可以进到893694563,群内会有不定期的分享测试资料。还会有技术大牛,业内同行一起交流技术

通过testsuit来执行测试用例的方式:

如果想只想运用某一个用例呢?怎么办?使用套件然后传入测试用例的方法名即可,看实例

import unittest 

# 执行测试的类
class UCTestCase(unittest.TestCase):
    def setUp(self):
        #测试前需执行的操作
      
    def tearDown(self):
        #测试用例执行完后所需执行的操作
     
    # 测试用例1
    def test1(self):
        #具体的测试脚本
      
    # 测试用例2
    def test2(self):
        #具体的测试脚本
       
if __name__ == "__main__":
    # 构造测试集
    suite = unittest.TestSuite()
    suite.addTest(UCTestCase("test1"))
    suite.addTest(UCTestCase("test2"))
    # 执行测试
    runner = unittest.TextTestRunner()
    runner.run(suite)
通过testLoader方式:

如果有多个类的情况下,我想运行某个类下面的测试用例呢?通过testLoader

import unittest

class TestCase1(unittest.TestCase):
    def testCase1(self):
    print("a")
    def testCase2(self):
    print("b")
 

class TestCase2(unittest.TestCase):
    def testCase1(self):
        print("a1")
    def testCase2(self):
        print("b1")
 
if __name__ == "__main__":
    #此用法可以同时测试多个类
    suite1 = unittest.TestLoader().loadTestsFromTestCase(TestCase1)
    suite2 = unittest.TestLoader().loadTestsFromTestCase(TestCase2)
    suite = unittest.TestSuite([suite1, suite2])
通过discover方式加载某路径下的所有测试用例
import unittest

# discover可以一次调用多个脚本
# test_dir 被测试脚本的路径
# pattern 脚本名称匹配规则

test_dir = "./test_case"
discover = unittest.defaultTestLoader.discover(test_dir, pattern="test*.py")

# 匹配test_case目录下所有以test开头的py文件,执行这些py文件下的所有测试用例
if __name__ == "__main__":
    runner=unittest.TextTestRunner()
    runner.run(discover)

如果对软件测试、接口测试、自动化测试、持续集成、面试经验。感兴趣可以进到893694563,群内会有不定期的分享测试资料。还会有技术大牛,业内同行一起交流技术

unittest 单元测试框架中,编写测试用例方式主要包括以下几种方法: ### 1. 定义独立测试用例类 通过创建一个继承自 `unittest.TestCase` 的类,并在其中定义以 `test_` 开头的方法,可以将每个方法视为一个独立的测试用例。这种方法适用于测试用例之间相互独立的情况。 ```python import unittest class MyTestCase(unittest.TestCase): def test_addition(self): result = 1 + 1 self.assertEqual(result, 2) def test_subtraction(self): result = 3 - 1 self.assertEqual(result, 2) ``` ### 2. 使用 `setUp` 和 `tearDown` 方法管理测试环境 在编写测试用例时,可以通过 `setUp()` 和 `tearDown()` 方法分别在每个测试用例执行前和执行后进行初始化和清理工作。例如: ```python def setUp(self): print("方法开始") def tearDown(self): print("方法结束") ``` 这些方法有助于确保测试用例之间的隔离性和一致性。 ### 3. 使用 `setUpClass` 和 `tearDownClass` 方法 对于需要在所有测试用例执行前后仅运行一次的初始化或清理操作,可以使用类级别的 `setUpClass` 和 `tearDownClass` 方法。这些方法需要被装饰为 `@classmethod`。 ```python @classmethod def setUpClass(cls): print("类的开始") @classmethod def tearDownClass(cls): print("类的结束") ``` ### 4. 通过测试套件(TestSuite)执行部分用例 可以使用 `unittest.TestSuite()` 构建一个测试套件,手动添加需要执行测试用例。这种方式适合运行特定测试用例或用例组合。 ```python if __name__ == '__main__': tj = unittest.TestSuite() tj.addTests([Jk("testa"), Jk("test1")]) unittest.TextTestRunner().run(tj) ``` ### 5. 通过 `unittest.main()` 自动发现并执行所有测试用例 使用 `unittest.main()` 可以自动发现当前模块中所有继承自 `unittest.TestCase` 的类,并执行其中的测试用例。 ```python if __name__ == '__main__': unittest.main() ``` ### 6. 使用装饰器控制测试用例执行 unittest 提供了多种装饰器来控制测试用例执行,例如跳过用例或标记用例为预期失败。 ```python @unittest.skip("跳过此用例") def test_skip_case(self): self.assertEqual(1, 2) @unittest.expectedFailure def test_expected_failure(self): self.assertEqual(1, 2) ``` ### 7. 编写参数化测试用例 虽然 unittest 本身不直接支持参数化测试,但可以通过循环生成测试用例或使用第三方库(如 `parameterized`)来实现这一功能。 ### 8. 通过模块化组织测试用例 如果测试用例分布在多个模块中,可以使用 `TestSuite` 将这些模块中的测试用例组合起来,并一次性执行。 ```python suite = unittest.TestSuite() suite.addTest(test_baidu.BaiduTest('test_baidu')) suite.addTest(test_youdao.YoudaoTest('test_youdao')) ``` ### 9. 生成 HTML 测试报告 unittest 支持通过第三方库(如 `HTMLTestRunner`)生成可视化的 HTML 测试报告,以更直观地展示测试结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码上开始

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

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

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

打赏作者

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

抵扣说明:

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

余额充值