Python测试框架,支持非致命故障

hou*_*ter 5 python testing assert nose

我正在评估自动系统测试的"测试框架"; 到目前为止,我正在寻找一个python框架.在py.test或鼻子中,我看不到类似于我从谷歌测试框架中知道的EXPECT宏.我想在一次测试中做出几个断言,而不是在第一次失败时中止测试.我在这些框架中遗漏了什么,或者这不起作用?有没有人对可用于自动化系统测试的python测试框架有什么建议?

Jas*_*ker 2

我想要类似的功能测试,我正在使用鼻子进行。我最终想出了这个:

def raw_print(str, *args):
    out_str = str % args
    sys.stdout.write(out_str)

class DeferredAsserter(object):
    def __init__(self):
        self.broken = False
    def assert_equal(self, expected, actual):
        outstr = '%s == %s...' % (expected, actual)
        raw_print(outstr)
        try:
            assert expected == actual
        except AssertionError:
            raw_print('FAILED\n\n')
            self.broken = True
        except Exception, e:
            raw_print('ERROR\n')
            traceback.print_exc()
            self.broken = True
        else:
            raw_print('PASSED\n\n')

    def invoke(self):
        assert not self.broken
Run Code Online (Sandbox Code Playgroud)

换句话说,它打印出指示测试是否通过或失败的字符串。在测试结束时,您调用实际上执行真正断言的调用方法。这绝对不是优选的,但我还没有见过可以处理这种测试的Python测试框架。我也没有抽出时间去弄清楚如何编写一个鼻子插件来完成这种事情。:-/