如何断言python unittest不会引发错误

时间:2016-03-22 19:12:36

标签: python unit-testing assert

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

以下是方法的示例。

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

以下是我试图编写的测试示例。

def production_warning():
    try:
        assert test.production_warning('prdv') is not errors
        assert test.validate_params('fakeenv') is errors
        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()

def db_refresh_prompt():
    # assert test.db_refresh_prompt() is not errors
    global counter
    counter += 1
    print "Test Passed {0}/5: db_refresh_prompt".format(counter)

production_warning()
db_refresh_prompt()
etc()

如何检查是否出现错误?在一天结束的时候,我试图通过所有这些测试和每个功能,如果没有例外,打印"成功"。如果出现异常,请继续进行下一个测试。人们似乎一直指着我走向"如果有一个"则调用你的函数将自动引发异常,但是每当抛出异常并且我不想要那个时,这将停止我的测试,我想继续进行下一次测试。

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

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中使用)

1 个答案:

答案 0 :(得分:4)

断言测试代码不会引发异常免费,您不需要为此编写代码。