所以我想導入一個模塊,並從該模塊中的類中測試方法。如何斷言與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