python unit test什么意思_Python unittest modu中unittest.main()的含义

与unittest相关联的main实际上是TestProgram的一个实例,它在实例化时运行所有测试。735 class TestProgram:

752 - def __init__(self, module='__main__', defaultTest=None,

753 argv=None, testRunner=None, testLoader=defaultTestLoader):

754 if type(module) == type(''):

755 self.module = __import__(module)

756 for part in module.split('.')[1:]:

757 self.module = getattr(self.module, part)

758 else:

759 self.module = module

760 if argv is None:

761 argv = sys.argv

762 self.verbosity = 1

763 self.defaultTest = defaultTest

764 self.testRunner = testRunner

765 self.testLoader = testLoader

766 self.progName = os.path.basename(argv[0])

767 self.parseArgs(argv)

768 self.runTests()

769

770 - def usageExit(self, msg=None):

771 if msg: print msg

772 print self.USAGE % self.__dict__

773 sys.exit(2)

774

775 - def parseArgs(self, argv):

776 import getopt

777 try:

778 options, args = getopt.getopt(argv[1:], 'hHvq',

779 ['help','verbose','quiet'])

780 for opt, value in options:

781 if opt in ('-h','-H','--help'):

782 self.usageExit()

783 if opt in ('-q','--quiet'):

784 self.verbosity = 0

785 if opt in ('-v','--verbose'):

786 self.verbosity = 2

787 if len(args) == 0 and self.defaultTest is None:

788 self.test = self.testLoader.loadTestsFromModule(self.module)

789 return

790 if len(args) > 0:

791 self.testNames = args

792 else:

793 self.testNames = (self.defaultTest,)

794 self.createTests()

795 except getopt.error, msg:

796 self.usageExit(msg)

797

798 - def createTests(self):

799 self.test = self.testLoader.loadTestsFromNames(self.testNames,

800 self.module)

801

802 - def runTests(self):

803 if self.testRunner is None:

804 self.testRunner = TextTestRunner(verbosity=self.verbosity)

805 result = self.testRunner.run(self.test)

806 sys.exit(not result.wasSuccessful())

807

808 main = TestProgram

因此,当执行unittest.main()时,会创建TestProgram的对象,该对象在第768行调用self.runTests()。构造函数还将当前文件作为包含测试的默认模块(module='__main__')。当调用runTests()时,它依次调用self.testrunner.run()。当您引用TextTestRunner类的“run”方法时,您会发现它实际上运行并报告所有测试结果。当您调用unittest.main()时,TestProgram.parseArgs在第775行完成测试发现。self.createTests第798行实际上负责发现所有测试用例并创建一个测试套件。这就是全部的魔力。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值