unittest 说 continue 语句没有被测试?

问题描述

Python 2.7.18 with Coverage 5.3(客户端要求)

真的被这个问题难住了。在开始重构之前尝试让单元测试报告 100%。

在下面的代码示例中(当然大大简化了),Coverage 表示未检查 continue 语句!

class Test7(unittest.TestCase):
    def test_7(self):
        test7()

def test7():
    for i in range(0,3):
        if i > 0:
            if i > 1:
                print 'loop1 iteration = ' + str(i)
            continue
        if i == 0:
            print 'blah'

如果我在 continue 上方放入打印语句,它会被检查并且没有问题! 'pass'虽然不一样...... :(

我尝试了许多其他迭代,但无法弄清楚。

它必须是基本的东西吗?

谢谢!

解决方法

continue 行可能被 CPython peephole 优化器删除了,所以无法覆盖。

建议重构以避免该问题:

if i > 0:
    if i > 1:
        print 'loop1 iteration = ' + str(i)
elif i == 0:
    print 'blah'