Python - 在单元测试中返回异常
Python - Returning Exception in unittest
我开始学习 TDD 并将保龄球游戏型作为练习。
我已经完成了一些常规分数测试,但我想添加更多只是为了练习,一个想法是如果我掷出负数则引发异常。
孔代码不相关,因为这是一个简单的验证
class BowlingGame(object):
def __init__(self):
pass
def roll(self, pins):
if pins < 0:
#Want to Return Value Exception
class BowlingGameTest(unittest.TestCase):
def setUp(self):
self._game = BowlingGame()
def test_roll_negative(self):
self.game.roll(-1)
#Want to catch exception here with self.assert or except
问题是如果我 return 例如 0/0 在 BowlingGame class 而不是 BowlingGameTest class 中引发异常(有两个不同的文件).
如果我 return ValueError
(BowlingGame Class) 和 self.assertRaises(ValueError):
(BowlingGameTest Class) 我得到 AssertionError: ValueError not raised
有什么想法吗?
像这样..
try:
self.game.roll(-1)
except ValueError:
pass
您需要 raise
ValueError
而不是 return
ing 它,即
def roll(self, pins):
if pins < 0:
raise ValueError
返回一个异常实际上returnsclass对象,但是如果你引发一个异常,它会抛出你想要的错误。
听起来您使用的 self.assertRaises
是正确的 - 不过以防万一 - 它应该看起来像这样:
def test_roll_negative(self):
with self.assertRaises(ValueError):
self.game.roll(-1)
我开始学习 TDD 并将保龄球游戏型作为练习。 我已经完成了一些常规分数测试,但我想添加更多只是为了练习,一个想法是如果我掷出负数则引发异常。
孔代码不相关,因为这是一个简单的验证
class BowlingGame(object):
def __init__(self):
pass
def roll(self, pins):
if pins < 0:
#Want to Return Value Exception
class BowlingGameTest(unittest.TestCase):
def setUp(self):
self._game = BowlingGame()
def test_roll_negative(self):
self.game.roll(-1)
#Want to catch exception here with self.assert or except
问题是如果我 return 例如 0/0 在 BowlingGame class 而不是 BowlingGameTest class 中引发异常(有两个不同的文件).
如果我 return ValueError
(BowlingGame Class) 和 self.assertRaises(ValueError):
(BowlingGameTest Class) 我得到 AssertionError: ValueError not raised
有什么想法吗?
像这样..
try:
self.game.roll(-1)
except ValueError:
pass
您需要 raise
ValueError
而不是 return
ing 它,即
def roll(self, pins):
if pins < 0:
raise ValueError
返回一个异常实际上returnsclass对象,但是如果你引发一个异常,它会抛出你想要的错误。
听起来您使用的 self.assertRaises
是正确的 - 不过以防万一 - 它应该看起来像这样:
def test_roll_negative(self):
with self.assertRaises(ValueError):
self.game.roll(-1)