一个单元测试应该对它正在测试的函数了解多少?

2024-04-25 15:28:47 发布

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

我正在写一个缓存机制的测试。该机制有两个缓存层,请求缓存和redis。请求缓存使用Flask.g,一个存储请求持续时间值的对象。它通过在Flask.g._cache属性上创建字典来实现这一点。你知道吗

但是,我认为确切的属性是我的单元测试不应该关心的实现细节。我想确保它将其值存储在Flask.g上,但我不关心它是如何做到的。有什么好方法来测试这个?你知道吗

我使用的是Python mock模块,所以我知道我可以模拟`Flask.g,但是我不确定是否有方法可以测试它是否有任何属性访问,而不关心它是哪个属性。你知道吗

对于这样的测试,这是正确的方法吗?你知道吗


Tags: 模块对象方法redisflaskcache字典属性
1条回答
网友
1楼 · 发布于 2024-04-25 15:28:47

就个人而言,如果您正在测试端点,就不应该嘲笑Flask.g。因为你要创造一个self.app软件(我可能不确定这部分)

其次,您需要模拟redis客户机,使用类似这样的返回结构。你知道吗

class RedisTestCase(object):
    saved_dictionary = {}
    def keys(self, pattern):
        found_keys = []
        for key in RedisTestCase.saved_dictionary: #loop keys for pattern
            if pattern:
                found_keys.append(key)
        return found_keys

    def delete(self, keys):
        for key in keys:
            if key in RedisTestCase.saved_dictionary:
                del RedisTestCase.saved_dictionary[key]

    def mset(self, items):
        RedisTestCase.saved_dictionary.update(items)

    def pipeline(self):
        return RedisTestCase()

相关问题 更多 >