Python在unittes中返回异常

2024-05-23 19:46:17 发布

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

我开始学习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

问题是,如果我返回例如0/0,则在BowlingGame类中而不是在BowlingGameTest类中引发异常(在两个不同的文件中)。在

如果我用return ValueError(BowlingGame类)和self.assertRaises(ValueError):(BowlingGameTest类)做AssertionError: ValueError not raised

有什么想法吗?在


Tags: toselfgame游戏def常规classroll
2条回答

你需要raiseValueError,而不是return,也就是说

def roll(self, pins):
    if pins < 0:
        raise ValueError

返回异常实际上返回类对象,但是如果您引发异常,它将抛出您想要的错误。在

听起来你正确地使用了self.assertRaises只是以防万一,它应该是这样的:

^{pr2}$

像这样。。在

try:
    self.game.roll(-1)
except ValueError:
    pass

相关问题 更多 >