用python编写测试

2024-09-30 01:28:01 发布

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

我目前正在学习一门python课程,我是编程新手。我已经编写了下面的代码,并想编写一个代码来测试ResilientPlayer是否真的做了它应该做的事情。这个代码来自一个跳槽和梯子的棋盘游戏,其中ResilientPlayer是一个“特殊”类型的玩家,在下一步从跳槽上摔下来后获得一个“超级力量”。下一轮他从降落伞上摔下来后,他会在骰子上加上一个给定的或默认的数字,我想测试我的代码是否真的做到了这一点!希望有人能帮我解决这个问题:)

class Player:
    def __init__(self, board):
        self.board = board
        self.position = 0
        self.n_steps = 0

    def move(self):
        die_roll = random.randint(1, 6)
        self.position = self.get_position() + die_roll

        self.board.position_adjustment(self.position)

        self.n_steps += 1

    def get_position(self):
        return self.position

    def get_steps(self):
        return self.n_steps


class ResilientPlayer(Player):
    default_extra_steps = 1

    def __init__(self, board, extra_steps=None):
        super().__init__(board)
        self.extra_steps = extra_steps
        if self.extra_steps is None:
            self.extra_steps = self.default_extra_steps

    def move(self):
        if self.get_position() in self.board.chutes.values():
            die_roll = random.randint(1, 6)
            self.position = self.get_position() + die_roll + self.extra_steps

            self.board.position_adjustment(self.position)

            self.n_steps += 1
        else:
            super().move()

    def get_position(self):
        return self.position

    def get_steps(self):
        return self.n_steps

Tags: 代码selfboardgetmovereturninitdef
1条回答
网友
1楼 · 发布于 2024-09-30 01:28:01

最好的方法是使用unittest类,我按以下方式执行:

import unittest
from .... import ResilientPlayer


class TestResilientPlayer(unittest.TestCase):

    def setUp(self):
        self.resilient_player = ResilientPlayer(....)

    def test_move(self):
        # Do stuff
        self.assertEqual(1, 1)


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

在这里,unittest.main()将运行文件中的所有测试。setUp在每个测试之前运行(因此可以有多个具有相同启动条件的测试)。你知道吗

这是一个非常有用的模块,我强烈建议阅读更多关于它的内容,请查看the documentation

相关问题 更多 >

    热门问题