如何在Python中进行变量重新分配的单元测试

2024-04-25 16:35:55 发布

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

主要问题:什么是单元测试类变量(self.file_path)是否由给定以下类的方法成功重新分配的最有效方法

class FileHandler(object):
    def __init__(self, file_path):
        self.file_path = file_path     # /original/path/file.csv

    def reassign_path(new_path):
        self.file_path = new_path      # /new/path/file.csv
        self.run_long_operation(self.file_path)

我最初尝试在运行reassign_path()之后测试self.file_path变量是否不同,但该方法需要很长时间才能完成,并且大大降低了测试速度

次要问题:有没有一种方法可以简单地检查一个方法是否在不运行整个方法的情况下重新分配一个类变量?有没有更好的办法


Tags: csvpath方法runselfnewobjectinit
1条回答
网友
1楼 · 发布于 2024-04-25 16:35:55

我并不是说它是最好的解决方案,但它是测试友好的。它类似于模拟缓慢的操作,但更显式,并使用其定义的接口测试函数,而不是对要模拟的内容进行特定于实现的假设

与其硬编码长而慢的操作,不如将其作为reassign_path的参数

class FileHandler(object):
    def __init__(self, file_path):
        self.file_path = file_path

    def reassign_path(self, new_path, f=FileHandler.run_long_operation):
        self.file_path = new_path
        f(self, self.file_path)

现在,您可以通过传递另一个更快的函数作为第二个参数来快速测试reassign_path

def test_reassign_path_quickly(self):
     fh = FileHandler('/old/path')
     fh.reassign_path('/new/path', lambda *args: None)
     self.assertEquals(fh.file_path, '/new/path')

相关问题 更多 >