python自动化之unittest的addTest使用方法总结

当写好一个测试类后,调用unittest.main()将执行所有的测试用例,为了只执行需要的用例,可以使用TestSuite套件,将指定的单条/多条用例加进来一起执行。
关于TestSuite.addTest()加入用例的方法或者说写法非常的多,这里做一个小总结。

先是简单的测试类,只包含了两个测试用例供一会加载
没有加断言,所以在pycharm下不能以test的方式跑

import unittest

class Unittest_addTest(unittest.TestCase):
    def setUp(self):
        pass
    
    def tearDown(self):
        pass
    
    @classmethod
    def setUpClass(cls):
        pass

    @classmethod
    def tearDownClass(cls):
        pass
    
    def test_one(self):
        print('-----one-----')
        
    def test_two(self):
        print('-----two-----')
        
if __name__ == '__main__':
	# 执行全部用例
    unittest.main()

1、TestSuite与TestResult结合
我个人不太喜欢这种,感觉不是很清晰,TestResult是存测试结果的,TestSuite还提供了需要TestResult参数的run方法。总之正常执行是没有问题的

    suite = unittest.TestSuite()
    # 格式:类命(用例名)
    suite.addTest(Unittest_addTest('test_one'))
    suite.addTest(Unittest_addTest('test_two'))

    result = unittest.TestResult()
    suite.run(result)

运行结果:
在这里插入图片描述
2、TestSuite与TextTestRunner运行器结合
这个就比前一个方法清晰些了,一眼就能看出在跑套件中的用例

    runner = unittest.TextTestRunner()
    suite = unittest.TestSuite()
    # 格式:类命(用例名)
    suite.addTest(Unittest_addTest('test_one'))
    suite.addTest(Unittest_addTest('test_two'))
    result = runner.run(suite)

也可以写成这种形式:(不太推荐,每个都进行实例化比较麻烦

#用例加载
    case1 = Unittest_addTest("test_one")
    case2 = Unittest_addTest("test_two")
    suite.addTest(case1)
    suite.addTest(case2)

3、TestSuite与TextTestRunner、Testloader加载器结合
基本框架如下:

    suite = unittest.TestSuite()
    loader = unittest.TestLoader()
    runner = unittest.TextTestRunner()
	
	#中间加载指定用例
	
    runner.run(suite)

①通过方法名来加载

# 模块名.类名.方法名
suite.addTest(loader.loadTestsFromName("UnitTest_addTests.Unittest_addTest.test_one"))

前面用的方法都可以细到类中的某条用例,下面是以模块/类名的方式一次性加载各个测试类

②通过测试用例类进行加载

 suite.addTest(loader.loadTestsFromTestCase(Unittest_addTest))

③通过路径加载
path指定用例所在的目录
pattern指定文件名,可以按名字前缀等查找,比如
UnitTest*.py, 就是加入所有开头能与UnitTest匹配上的py文件中的测试用例

    path = os.path.dirname(os.path.abspath(__file__))
    suite.addTest(loader.discover(path, pattern='UnitTest_addTests.py'))

深入的原理在以后有时间的情况下会继续补充。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值