Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python单元测试中的assertRaises未捕获异常_Python_Unit Testing_Assertraises - Fatal编程技术网

python单元测试中的assertRaises未捕获异常

python单元测试中的assertRaises未捕获异常,python,unit-testing,assertraises,Python,Unit Testing,Assertraises,有人能告诉我为什么下面的单元测试失败了吗 test_中的ValueError错误,而不是用assertRaises捕获它 成功了吗?我想我使用了正确的程序和语法, 但是ValueError没有被发现 我正在linux机器上使用Python 2.7.5 这是代码 import unittest class IsOne(object): def __init__(self): pass def is_one(self, i): if (i != 1)

有人能告诉我为什么下面的单元测试失败了吗 test_中的ValueError错误,而不是用assertRaises捕获它 成功了吗?我想我使用了正确的程序和语法, 但是ValueError没有被发现

我正在linux机器上使用Python 2.7.5

这是代码

import unittest

class IsOne(object):
    def __init__(self):
        pass
    def is_one(self, i):
        if (i != 1):
            raise ValueError

class IsOne_test(unittest.TestCase):

    def setUp(self):
        self.isone = IsOne()

    def test_good(self):
        self.isone.is_one(1)
        self.assertTrue(True)

    def test_bad(self):
        self.assertRaises(ValueError, self.isone.is_one(2))

if __name__ == "__main__":
    unittest.main()
下面是单元测试的输出:

======================================================================
ERROR: test_bad (__main__.IsOne_test)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test/raises.py", line 20, in test_bad
    self.assertRaises(ValueError, self.isone.is_one(2))
  File "test/raises.py", line 8, in is_one
    raise ValueError
ValueError

----------------------------------------------------------------------
Ran 2 tests in 0.008s

FAILED (errors=1)
Unittest接受一个可调用的和参数,因此在您的情况下,您可以这样调用它:

self.assertRaises(ValueError, self.isone.is_one, 2)
如果您愿意,从Python2.7开始,您还可以将其用作上下文管理器,如:

with self.assertRaises(ValueError):
    self.isone.is_one(2)