如何对依赖于实例属性的实例方法进行单元测试?

宾尼

我正在创建一个刽子手游戏。实例方法resolve_game_status根据猜测的总数检查游戏是应该结束还是继续。如果游戏可以继续,该函数将返回一个字符串,显示匹配的那些猜测字母。当类被实例化时填充属性self.guessesself.game_wordGame

所以我希望对resolve_game_status. 鉴于该方法依赖于这两个属性,我不确定如何真正设置测试以实现此目标。

class Game:

    def __init__(self):
        self.guesses = []
        self.game_word = choice(game_words)

    def get_player_guess(self):
        pass

    def resolve_game_status(self):
        pass
    '''Access self.guesses & self.game_word from here```

class TestGameStatus(TestCase):
    '''Verify that the game word string shows only
    those letters that are guessed if the game is ongoing.'''

    def setUp(self):
        self.game = Game()

    def test_hangman_revealed_letter_matches(self):
        with patch.object(
            self.game, 'game_word', new_callable=PropertyMock
        ) as mock_game_word:
            with patch.object(
                self.'guesses', new_callable=PropertyMock
            ) as mock_guesses:
                guesses = [
                    Guess('a', 'miss'), Guess('p', 'hit'), Guess('o', 'hit')
                ]
                mock_game_word.return_value = "python"
                mock_guesses.return_value = guesses
                updated_hangman_string = self.game.resolve_game_status()
                self.assertEqual(updated_hangman_string, "p _ _ _ o _")

切普纳

不需要随机选择一个词。创建一个选择随机单词并将其作为参数传递给 的类方法__init__

class Game:

    def __init__(self, word):
        self.guesses = []
        self.game_word = word

    @classmethod
    def with_random_word(cls):
        return cls(choice(game_words))

    ...

现在您可以通过简单地传递一个已知单词来进行测试

class TestGameStatus(TestCase):
    '''Verify that the game word string shows only
    those letters that are guessed if the game is ongoing.'''

    def setUp(self):
        self.game = Game("python")

    def test_hangman_revealed_letter_matches(self):
        self.game.guesses = [
                Guess('a', 'miss'), Guess('p', 'hit'), Guess('o', 'hit')
        ]
        updated_hangman_string = self.game.resolve_game_status()
        self.assertEqual(updated_hangman_string, "p _ _ _ o _")

因为Game每次测试都会创建一个新的实例,所以不需要使用mock.patch改变 的值self.guesses直接赋值就行了。

在实际代码中,您将简单地使用Game.with_random_word()而不是Game直接实例化

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何对依赖于其他方法的测试方法进行单元化

如何对依赖于ActivatedRoute参数的组件进行单元测试?

如何对依赖于springBoot applicationContext的单元测试方法进行单元测试?

如何为依赖于其他服务或数据库的服务编写单元测试

如何测试依赖于环境变量的Rust方法?

依赖注入和单元测试-静态助手方法或私有实例方法

依赖于全局事件总线的Vue组件的单元测试

安全地编写依赖于相同文件资源的单元测试吗?

如何对依赖于元素高度的组件进行单元测试(角度为5)?

依赖于其他吸气剂的单元测试Vuex吸气剂

如何对依赖于HttpContext.GetGlobalResourceObject的类进行单元测试?

如何对在__init__方法外部初始化的实例变量进行单元测试

单元测试依赖于StreamReader读取文件的方法

当processElement依赖于广播的数据时,如何在flink中对BroadcastProcessFunction进行单元测试

如何对依赖于外部库“ <script src =“ http:// stripe [...]”的API进行单元测试

如何对依赖服务的组件的方法进行单元测试?

如何对依赖的cpde进行单元测试

如何在Flutter中对依赖于第三方包装的代码进行单元测试?

如何运行依赖于Android库模块的单元测试?

如何对一个依赖于其注册回调的Angular服务进行单元测试?

如何在不实例化类的情况下对方法进行单元测试?

Python-依赖于先前功能结果的单元测试功能(链式功能)

依赖于64位itk框架的单元测试dll

使用Jest对依赖于HTTP调用的代码进行单元测试的最佳方法?

对依赖于数据库的函数进行单元测试

如何对依赖的 if 语句进行单元测试?

如何对依赖于 redux props 的组件进行单元测试

在依赖于 instanceof (JEST) 的函数中测试实例

如何对也由方法重新调整的实例化类进行单元测试?