gpt4 book ai didi

python - 如何断言 python unittest 没有引发错误

转载 作者:行者123 更新时间:2023-12-05 09:20:46 26 4
gpt4 key购买 nike

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

这里是一个方法的例子。

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,我可以用它做任何我想做的事。

希望这些信息足够了。

根据给出的许多答案,我假设单元测试中没有内置任何我可以执行 assertRaise 的内容(我相信这在 Django 中使用)

最佳答案

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

关于python - 如何断言 python unittest 没有引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36163183/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com