【发布时间】:2014-01-12 19:18:34
【问题描述】:
美好的一天。
我在python2.7 和mongo 2.4.8 中使用pymongo==2.1.1 时遇到了以下问题
我曾尝试使用 google 和堆栈溢出找到解决方案,但失败了。
有什么问题?
我有以下功能
from bson.code import Code
def read(groupped_by=None):
reducer = Code("""
function(obj, prev){
prev.count++;
}
""")
client = Connection('localhost', 27017)
db = client.urlstats_database
results = db.http_requests.group(key={k:1 for k in groupped_by},
condition={},
initial={"count": 0},
reduce=reducer)
groupped_by = list(groupped_by) + ['count']
result = [tuple(res[col] for col in groupped_by) for res in results]
return sorted(result)
然后我正在尝试为这个函数编写测试
class UrlstatsViewsTestCase(TestCase):
test_data = {'data%s' % i : 'data%s' % i for i in range(6)}
def test_one_criterium(self):
client = Connection('localhost', 27017)
db = client.urlstats_database
for column in self.test_data:
db.http_requests.remove()
db.http_requests.insert(self.test_data)
response = read([column])
self.assertEqual(response, [(self.test_data[column], 1)])
据我所知,由于延迟,此测试有时会失败。如我所见,响应没有清理其中的数据
如果我一直在删除测试通过后添加延迟。
有什么合适的方法来测试这些功能吗?
提前致谢。
【问题讨论】:
-
你应该检查你的服务器在写问题方面有什么样的行为。如果您必须添加延迟,可能是您的服务器非常慢或过载,并且您的删除时间比平均时间长并触发超时。如果你在本地运行你的服务器尝试在写关注中使用 w:0,你的机器可能可以处理许多请求并且写失败触发错误,使用 w:0 进行测试。
标签: python mongodb unit-testing pymongo