gpt4 book ai didi

python - 预期 Python assertRaises() 失败,但测试总是通过

转载 作者:行者123 更新时间:2023-11-30 23:13:29 25 4
gpt4 key购买 nike

我正在尝试实践 TDD,所以我一直在尝试从 Python 的单元测试模块开始。我写了一个测试,我完全预计会失败,但它总是通过!下面是测试代码:

def test_file_not_found_exception(self):
invalid_config = "Testing/invalidExperiment.xml"
experiment_with_invalid_config = MyClass(invalid_config)
self.assertRaises(OSError, experiment_with_invalid_config.run_experiment())

我的类定义如下:

class MyClass:
def __init__(self, experiments, output_directory = ".")
self._experiments = experiments
self._output_directory = output_directory
def run_experiment(self):
try:
x = 2 # dummy statement
except OSError:
print "Experiment file not found"
except:
print "Unexpected Error"

我认为 try block 应该始终正确执行,因此我不知道为什么我的单元测试不断通过。我对 Python 中的 OOP 很陌生,所以我可能会犯一个非常明显的错误...另外,如果我在 run_experiment() 方法的 try- except block 中捕获异常,那么assertRaises() 调用应该起作用吗?

最佳答案

您正在调用函数 MyClass.run_experiment 并将其输出传递给 self.assertRaises,因此,当它无法引发错误时,它不会正确注册错误。

错误示例:

import unittest
class MyClass(object):
def __init__(self, config):
pass
def run_experiment(self): pass

class MainTest(unittest.TestCase):
def test_file_not_found_exception(self):
invalid_config = "Testing/invalidExperiment.xml"
experiment_with_invalid_config = MyClass(invalid_config)
self.assertRaises(OSError, experiment_with_invalid_config.run_experiment())

if __name__ == "__main__":
unittest.main()

正确:

with self.assertRaises(OSError): 
experiment_with_invalid_config.run_experiment()

或者

self.assertRaises(OSError, experiment_with_invalid_config.run_experiment)

关于python - 预期 Python assertRaises() 失败,但测试总是通过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29290643/

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