python unittest class 中的 assertRaises
assertRaises in python unittest class
我有一个 class 我写的,我正在尝试弄清楚单元测试。
listtest.py
class mylist:
def __init__(self,lst):
self.lst=lst
def vlist(self):
if not isinstance(self.lst,list):
raise TypeError('Not a list')
return self.lst
单元测试
import unittest
import listtest
class testvlist(unittest.TestCase):
def setUp(self):
self.chk=mylist([1,2,3])
def test_vlist(self):
self.assertEqual(self.chk.vlist(),[1,2,3])
self.assertRaises(TypeError,self.chk.vlist(),self.chk.lst)
if __name__ == '__main__':
uunittest.main()
assertRaises
工作不正常。它应该会失败,因为 self.l
是一个列表,但测试显示 运行 正常。如果我添加 5
应该显示 运行 好的,但我认为加薪是不正确的,因为列表运行正常但不应该。如何使用 self.assertRaises
检查 class.
中的加注
如果我们去 the documentation for assertRaises
旅行,我们就能看到问题。
它的签名是:
assertRaises(exception, callable, *args, **kwds)
这意味着您必须为其提供一些可调用的东西——一个函数。相反,您传递的是一个列表——可调用函数 self.chk.vlist
.
的 output
试试这个,传入那个函数本身。测试会失败,这就是你想要的。
def test_vlist(self):
self.assertEqual(self.chk.vlist(), [1, 2, 3])
self.assertRaises(TypeError, self.chk.vlist)
P.S。在我写这篇文章之前,我必须修复你代码中的缩进和拼写错误。请确保您在此处粘贴的代码完全您在本地运行的代码,否则我们将难以为您提供帮助。
这是检查 self.assertRaises
的方法。
with self.assertRaises(TypeError):
self.chk.vlist()
它会调用该函数,只有在 with
块中的代码执行中没有引发 TypeError
时才会失败。
我有一个 class 我写的,我正在尝试弄清楚单元测试。
listtest.py
class mylist:
def __init__(self,lst):
self.lst=lst
def vlist(self):
if not isinstance(self.lst,list):
raise TypeError('Not a list')
return self.lst
单元测试
import unittest
import listtest
class testvlist(unittest.TestCase):
def setUp(self):
self.chk=mylist([1,2,3])
def test_vlist(self):
self.assertEqual(self.chk.vlist(),[1,2,3])
self.assertRaises(TypeError,self.chk.vlist(),self.chk.lst)
if __name__ == '__main__':
uunittest.main()
assertRaises
工作不正常。它应该会失败,因为 self.l
是一个列表,但测试显示 运行 正常。如果我添加 5
应该显示 运行 好的,但我认为加薪是不正确的,因为列表运行正常但不应该。如何使用 self.assertRaises
检查 class.
如果我们去 the documentation for assertRaises
旅行,我们就能看到问题。
它的签名是:
assertRaises(exception, callable, *args, **kwds)
这意味着您必须为其提供一些可调用的东西——一个函数。相反,您传递的是一个列表——可调用函数 self.chk.vlist
.
试试这个,传入那个函数本身。测试会失败,这就是你想要的。
def test_vlist(self):
self.assertEqual(self.chk.vlist(), [1, 2, 3])
self.assertRaises(TypeError, self.chk.vlist)
P.S。在我写这篇文章之前,我必须修复你代码中的缩进和拼写错误。请确保您在此处粘贴的代码完全您在本地运行的代码,否则我们将难以为您提供帮助。
这是检查 self.assertRaises
的方法。
with self.assertRaises(TypeError):
self.chk.vlist()
它会调用该函数,只有在 with
块中的代码执行中没有引发 TypeError
时才会失败。