使用pyuni测试Python中的异常

2024-10-03 15:22:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要测试python代码是否有异常,但似乎无法运行正确的语句。
当我测试我的生产代码时,我可以看到异常被抛出,但是当我在我的单元测试文件中测试这个异常时,我得到的是:

testincorrectparam (unittestearnings.TestEarningsArgs)
should raise error when param not an integer ... "3v" is not a valid argument.  i should be an integer
ERROR

我读了一遍类似的问题,但我还是没能找到一个满意的答案。。在

生产代码如下所示:

^{pr2}$

单元测试代码是:

from earnings import Earnings
import unittest

class TestEarningsArgs(unittest.TestCase):

   def testincorrectparam(self):
      '''should raise error when param not an integer'''
      e = Earnings()
      value = "3v"
      self.assertRaises(Exception, e.printd(i=value))

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

非常感谢你的帮助。在


Tags: 代码importanparamnoterrorinteger单元测试
3条回答

我试图学习python中的单元测试,我认为assertRaise的一般形式是

TestCase.assertRaises(Exception, callable, parameter1,parameter2,...)

所以请尝试一下

^{pr2}$

希望对你有用

问题是异常被捕获了,它没有传播到unittest。您需要删除try except语句并离开i = int(i)。在这种情况下,将引发异常,assertRaises将自己捕获它。在

另一个问题是线路系统出口(0)在您的代码中。您需要用raise Exception(…)替换它,因为异常类不是一个特定的异常(您应该针对您预期的错误发生的情况引发更具体的异常)。在

sys.exit(0)替换为raise

相关问题 更多 >