- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
所以我正在尝试使用 redis 为项目构建一些测试,但我有两种方法给我带来了麻烦。
这两种方法都使用 @cache_method()
装饰器,并会吐出类似于 AssertionError: [] != []
的失败报告或 AsserionError: [<ObjectName: instance_name>] != [<ObjectName: instance_name>]
.这些测试都符合以下内容:
self.assertEquals(self.ObjectName.Method(), ObjectName.objects.none())
或
self.assertEquals(self.ObjectName.Method(), ObjectName.objects.filter(...))
如果我使用类似 self.assertEquals(type(), type())
的东西测试通过了,所以我完全不知所措。
我的测试类是这样的:
class SimpleTest(TestCase):
def setUp(self):
self.reset_pool()
self.cache = self.get_cache()
self.cache.clear()
... setup a bunch of self.Object instances for the actual tests ...
def reset_pool(self):
if hasattr(self, 'cache'):
self.cache._client.connection_pool.disconnect()
def get_cache(self, backend=None):
if VERSION[0] == 1 and VERSION[1] < 3:
cache = get_cache(backend or 'redis_cache.cache://127.0.0.1:6379?db=15')
elif VERSION[0] == 1 and VERSION[1] >= 3:
cache = get_cache(backend or 'default')
return cache
我怎样才能通过这些测试?
最佳答案
self.ObjectName.Method()
是否返回一个 QuerySet?如果不是,我会怀疑这是你的问题。 ObjectName.objects.filter(...)
将返回一个 QuerySet。如果您的方法返回任何其他内容,那么断言自然会失败。
更具体地说,ObjectName.objects.none()
将返回一个 django.db.models.query.EmtpyQuerySet 而 filter()
将返回一个 django .db.models.query.EmptyQuerySet
或 django.db.models.query.QuerySet
取决于匹配过滤器的内容(如果有的话)。
所以您似乎在某个地方试图比较一个 ObjectName.method()
是: a) 不返回 QuerySet 而是返回一些不同的东西 -或者- b) 在需要 EmptyQuerySet 时(例如调用 none() 时)返回 QuerySet,反之亦然。
由于我们不知道 ObjectName.method()
是什么或它返回什么,您需要查看那个/那些方法以查看它返回什么以及可能为什么。
我希望这能为您指明正确的方向。
关于python - 构建处理 redis 和 cache_method 装饰器的测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7654486/
所以我正在尝试使用 redis 为项目构建一些测试,但我有两种方法给我带来了麻烦。 这两种方法都使用 @cache_method()装饰器,并会吐出类似于 AssertionError: [] !=
我是一名优秀的程序员,十分优秀!