如何断言python单元不会引发错误

2024-09-30 16:29:25 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我尝试导入一个模块,并从该模块中的一个类测试方法。在

下面是一个方法的示例。在

def production_warning(self, targetenv):
    if targetenv == 'prdv':
        prodwarning1 = raw_input("WARNING: You are deploying to the production environment.  Are you sure you want to do this?   Y/N:  ").upper()
        if prodwarning1 == "N":
            sys.exit()
        prodwarning2 = raw_input("DEPLOYING TO PRDV, ARE YOU REALLY, REALLY SURE?  Y/N:  ").upper()
        if prodwarning2 == "N":
            sys.exit()
    else:
        return True

下面是我要写的一个测试的例子。在

^{pr2}$

如何检查是否出现错误?最后,我将尝试运行所有这些测试,并且对于每个函数,如果没有引发异常,则打印“Success”。如果引发异常,请继续进行下一个测试。人们似乎一直在向我指出“如果有异常,调用函数将自动引发异常”,但这将停止我的测试,每当抛出异常时,我不想这样,我想继续下一个测试。在

我可以通过以下方式解决这个问题:

def validate_params():
try:
    assert test.validate_params('hackenv-re', 'test.username') is not errors
    assert test.validate_params('fakeenv', 'test.username') is errors
    assert test.validate_params('hackevn-re', 'vagrant') is errors
    global counter
    counter += 1
    print "Test Passed {0}/5: validate_params".format(counter)
    test_db_refresh()
except:
    print "Test Failed {0}/5: validate_params".format(counter)
    test_db_refresh()

但这似乎违背了使用unittest的初衷?我认为使用unittest我可以断言是否引发了异常,它返回一个T/F,我可以用它做任何我想做的事情。在

希望这是足够的信息。在

根据给出的许多答案,我假设在unittest中没有任何内置的东西可以进行assertRaise(我相信这是在Django中使用的)


Tags: 模块testrawifisdefcounterassert