所以我想导入一个模块,并从该模块中的类中测试方法。如何断言与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
这是我试图写的一个测试的例子。
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()
但似乎这样的失败摆在首位使用单元测试的目的是什么?我认为,如果发生异常,它会返回一个T/F,我可以随心所欲地执行任何操作。
希望是足够的信息。
基于许多给出的答案,我假设没有什么内置在单元测试,我可以做assertRaise(我相信这是在Django使用)
那么你是否使用unittest?你的代码看起来不像你。 – Goyo
[如何声明一个函数调用不会返回unittest错误?](http://stackoverflow.com/questions/36142282/how-to-assert-that-a-function-call-does- not-return-an-error-with-unittest) – Goyo
我想要做的就是使用unittest并找到一种方法来测试是否引发异常。而已。如何检查是否引发异常? – david