Python assertRaises未捕获异常
我有一个单元测试,用于检查构造函数中的异常:Python assertRaises未捕获异常,python,unit-testing,Python,Unit Testing,我有一个单元测试,用于检查构造函数中的异常: import unittest from jaboci import Jacobi class TestJacobi(unittest.TestCase): def test_even(self): a = 11 n = 12 Jacobi(a, n) self.assertRaises(ValueError, Jacobi, a, n) if __name__ == '_
import unittest
from jaboci import Jacobi
class TestJacobi(unittest.TestCase):
def test_even(self):
a = 11
n = 12
Jacobi(a, n)
self.assertRaises(ValueError, Jacobi, a, n)
if __name__ == '__main__':
unittest.main()
被测类别:
class Jacobi:
def __init__(self, a, n):
self.a = a
self.n = n
if n % 2 == 0:
raise ValueError("N must be odd.")
当我使用-m unittest discover
运行unittest时,测试失败:
E
======================================================================
ERROR: test_even (test_jacobi.TestJacobi)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/prasopes/prg/python/PycharmProjects/jacobi_symbol/test_jacobi.py", line 9, in test_even
Jacobi(a, n)
File "/home/prasopes/prg/python/PycharmProjects/jacobi_symbol/jaboci.py", line 7, in __init__
raise ValueError("N must be odd.")
ValueError: N must be odd.
----------------------------------------------------------------------
Ran 1 test in 0.000s
FAILED (errors=1)
在self.assertRaises(ValueError,Jacobi,a,n)之前调用
Jacobi(a,n)
。您得到的异常来自第一次调用,因此测试立即失败。它永远不会到达您在self.assertRaises(ValueError,Jacobi,a,n)
之前调用Jacobi(a,n)
的assertRaises行。您得到的异常来自第一次调用,因此测试立即失败。它永远不会到达assertRaises
[因为我没有足够的代表对@mata answer发表评论…]
说清楚一点,你要么
- 删除雅可比(a,n)
[由@mata暗示]
- [因为我没有足够的代表对@mata answer发表评论…]
说清楚一点,你要么
- 删除雅可比(a,n)[由@mata暗示]
- 或者,调用“雅各比(n,a)”[如@abarnert comment对@mata的假设]
Jacobi(n,a)
(成功),然后assertrises(ValueError,Jacobi,a,n)
(按预期失败)。如果你这样做,测试就通过了。我怀疑OP实际上想执行Jacobi(n,a)
(成功),然后assertrises(ValueError,Jacobi,a,n)
(按预期失败)。如果您这样做,测试就通过了。您是想导入jaboci
而不是导入jacobi
?@abarnert文件名有误,谢谢您指出这一点。我在IDE中使用了自动完成功能,所以我没有注意到。你是想导入jaboci
而不是导入jacobi
?@abarnert这是文件名中的一个输入错误,谢谢你指出这一点。我在IDE中使用了自动完成,所以我没有注意到这一点。