实现集合接口的单元测试类?

2024-10-05 14:30:35 发布

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

我编写了一个可以使用不同存储后端的存储接口。作为演示,我编写了一个实现,将对象作为键/值对存储在标准Python字典中

class MyStorageInterface(object):
    def store(self, key, value):
        raise NotImplementedError("Class must be subclassed")

    def get(self, key):
        raise NotImplementedError("Class must be subclassed")

# Example implementation
class DictStorage(MyStorageInterface):
    def __init__(self):
        self._cache = dict()

    def store(self, key, value):
        self._cache[key] = value

    def get(self, key):
        return self._cache[key]

现在,我想为我的DictStorage实现编写一些单元测试。我的问题是:

storage = DictStorage()
value = 8
key = 'foo'
storage.store(key, value)
actual = storage.get(key)
assert actual == 8, "cache value for %s is %s, expected %s" % (key, str(actual), str(value))

是否是get方法的合适单元测试,或者是否存在用于测试实现集合类型对象的类的Pythonic模式


Tags: 对象storekeyselfcachegetvaluedef
1条回答
网友
1楼 · 发布于 2024-10-05 14:30:35

我不知道是否有什么“特定集合”,但你的测试结构看起来不错。唯一的区别是我将使用unittest包并将其定义为测试用例:

import unittest


class MyStorageInterface(object):
    def store(self, key, value):
        raise NotImplementedError("Class must be subclassed")

    def get(self, key):
        raise NotImplementedError("Class must be subclassed")


class DictStorage(MyStorageInterface):
    def __init__(self):
        self._cache = dict()

    def store(self, key, value):
        self._cache[key] = value

    def get(self, key):
        return self._cache[key]


class DictStorageTests(unittest.TestCase):
    def setUp(self):
        self._sut = DictStorage()

    def test_storing_and_retrieving_value(self):
        value_in = 8
        key = 'foo'
        self._sut.store(key, value_in)
        value_out = self._sut.get(key)
        self.assertEqual(value_in, value_out)


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

输出

.
                                   
Ran 1 test in 0.000s

OK

相关问题 更多 >