unittest.defaultTestLoader.discover实现在运行时运行用例

做基于unittest的自动化测试代码编写,运行用例或多或少都用到unittest.defaultTestLoader.discover方案。
 

suites=unittest.defaultTestLoader.discover('testcase',pattern='test*.py')

基于该方法查看其源码,其中有一段代码令人寻味<最后三行>,如下。

    def discover(self, start_dir, pattern='test*.py', top_level_dir=None):
       '''以上代码省略,只复制了最后三行'''

        if not is_namespace:
            tests = list(self._find_tests(start_dir, pattern))
        return self.suiteClass(tests)

再找到_find_tests方法如下:

 tests = list(self._find_tests(start_dir, pattern)) 的list方法直接把这个生成器生成的数据一次性拿出来,没有起到生成器的作用,故对其做一定的改变如下。

 将discover()改为一个生成器函数,等待更上层处理。

配合beautifulreport生成测试报告,需要在report模块对这个生成器做进一步处理。只需要将report方法中的注释的一行改为标红的代码即可。这时候就是一个模块一个模块的导入,运行。这里利用了生成器的惰性机制,当然也可以在外部做限定,使之一次只能导入一个模块(相对简单,这里不表)。

验证:

导入时就会打印红色标记内容。 

 未做更改时会一次性打印出来,再行运行用例one by one(奈何母语不过关,用一个接一个有点太口语化)。

配合beautifulreport如下:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值