python unittest.TestLoader()类的几种寻找testcase的方法的使用

unittest.TestLoader()提供了创建test suite的几种方法:
TestLoader().loadTestsFromTestCase(testCaseClass)
TestLoader().loadTestsFromModule(module, pattern=None)
TestLoader().loadTestsFromName(name, module=None)
TestLoader().loadTestsFromNames(name, module=None)
TestLoader().discover
下面一一列举其用法,并会感叹unittest的精妙之处。

  • loadTestsFromTestCase(testCaseClass)
    testCaseClass必须是TestCase的子类(或孙类也行)
  • loadTestsFromModule(module, pattern=None)
    test case所在的module
  • loadTestsFromName(name, module=None)
    name是一个string,string需要是是这种格式的“module.class.method”
  • loadTestsFromNames(name, module=None)
    names是一个list,用法与上同
  • discover(start_dir, pattern=’test*.py’, top_level_dir=None)
    从python文件中获取test cases

以上举例如下:
含有test cases的文件:for_all.py

class DefaultTestCase(unittest.TestCase):

    def setUp(self):
        print "Start to run"

    def tearDown(self):
        print "Close"


class CasesALL(DefaultTestCase):

    def ab_test_print_b(self):
        print 'b',
        print time.time()
        time.sleep(2)

用来执行测试用例的文件:run.py

import unittest
from unittest import TestLoader
import for_all
from for_all import CasesALL


if __name__ == '__main__':
    suite = unittest.TestSuite()
    loader = TestLoader()
    loader.testMethodPrefix = 'ab'
    # loader.sortTestMethodsUsing = None
    # test_cases_name = loader.getTestCaseNames(CasesALL)
    test_cases1 = unittest.TestLoader().loadTestsFromTestCase(CasesALL)
    test_cases2 = unittest.TestLoader().loadTestsFromModule(for_all)
    test_cases3 = unittest.TestLoader().loadTestsFromName('for_all.TestCase1.ab_test_print_b')
    suite.addTests(test_cases1)
    suite.addTests(test_cases2)
    suite.addTests(test_cases3)
    runner = unittest.TextTestRunner(verbosity=2)
    runner.run(suite)

调试时发现,其实三种方法得到的test suite的格式都不一样,但是runner.run()执行的结果是一样的,这也是我觉得惊喜的原因。

参考:
https://docs.python.org/3/library/unittest.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值