Pyunit源码笔记之六 testcase run的执行前奏

接上文,

for index, test in enumerate(self)第三次,test就是testcase:

testmul (__main__.MyTest)
testsum (__main__.MyTest)


TestCase.py中的class TestCase(object)的__call__()

    def __call__(self, *args, **kwds):
        return self.run(*args, **kwds)
TestCase.py中的class TestCase(object)的def run(self, result=None)

def run(self, result=None):
        ......

        result.startTest(self)

        testMethod = getattr(self, self._testMethodName)
        if (getattr(self.__class__, "__unittest_skip__", False) or
            getattr(testMethod, "__unittest_skip__", False)):
            # If the class or method was skipped.
            try:
                skip_why = (getattr(self.__class__, '__unittest_skip_why__', '')
                            or getattr(testMethod, '__unittest_skip_why__', ''))
                self._addSkip(result, self, skip_why)
            finally:
                result.stopTest(self)
            return
        expecting_failure_method = getattr(testMethod,
                                           "__unittest_expecting_failure__", False)
        expecting_failure_class = getattr(self,
                                          "__unittest_expecting_failure__", False)
        expecting_failure = expecting_failure_class or expecting_failure_method
        outcome = _Outcome(result)
        try:
            self._outcome = outcome


result.startTest(self)执行,也调用result.py的def startTest(self, test),testcase计数self.testsRun += 1

   def startTest(self, test):
        "Called when the given test is about to be run"
        self.testsRun += 1
        self._mirrorOutput = False
        self._setupStdout()
testMethod = getattr(self, self._testMethodName)取得 测试用例方法:

<bound method MyTest.testmul of <__main__.MyTest testMethod=testmul>>
<bound method MyTest.testsum of <__main__.MyTest testMethod=testsum>>

self._addSkip(result, self, skip_why)向result中添加skiped cases的信息,也调用result.py的addSkip(self, test, reason),self.skipped是一个list。

    def addSkip(self, test, reason):
        """Called when a test is skipped."""
        self.skipped.append((test, reason))


下面用class _Outcome(object)来执行和保存执行中的信息

class _Outcome(object):
    def __init__(self, result=None):
        self.expecting_failure = False
        self.result = result
        self.result_supports_subtests = hasattr(result, "addSubTest")
        self.success = True
        self.skipped = []
        self.expectedFailure = None
        self.errors = []


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值