我使用arango-orm(它在后台使用python-arango)。我建立了一个小型测试实用工具,它使用远程数据库插入测试数据,执行单元测试,然后再次删除测试数据。我使用Python for循环插入测试数据。每次迭代,一小段信息根据一个通用对象进行了修改,然后我将修改后的通用对象插入到ArangoDB中,直到我有10个测试对象为止。2然而,在代码运行之后,我的测试Assert告诉我,我的数据库中存储的对象不是10个,而是只有8个(或有时3,7或9)。看起来pythong-arango
异步运行这些查询,或者在数据实际插入之前ArangoDB
已经用OK进行了回复。有人知道发生了什么吗?当我在插入所有数据后进入1秒的睡眠状态时,我的测试运行为绿色。这显然不是解决方案。
这是我使用的一小段示例代码:
def load_test_data(self) -> None:
# This method is called from the setUp() method.
logging.info("Loading test data...")
for i in range(1, 11):
# insertion with data object (ORM)
user = test_utils.get_default_test_user()
user.id = i
user.username += str(i)
user.name += str(i)
db.add(user)
# insertion with dictionary
project = test_utils.get_default_test_project()
project['id'] = i
project['name'] += str(i)
project['description'] = f"Description for project with the id {i}"
db.insert_document("projects", project)
# TODO: solve this dirty hack
sleep(1)
def test_search_by_user_username(self) -> None:
actual = dao.search("TestUser3")
self.assertEqual(1, len(actual))
self.assertEqual(3, actual[0].id)
然后在一个单独的模块中创建如下的数据库:
client = ArangoClient(hosts=f"http://{arango_host}:{arango_port}")
test_db = client.db(arango_db, arango_user, arango_password)
db = Database(test_db)
编辑:我没有在创建集合时将sync
属性设置为true
,但是在更改集合并将其设置为true
之后,行为保持完全相同。
1条答案
按热度按时间vnzz0bqm1#
在与ArangoDB的人取得联系后,我了解到视图的更新速度不如集合。他们给了我一个内部的
SEARCH option
,它也在等待同步视图。因为它是一个内部选项,只用于单元测试,所以他们不鼓励使用它。对我来说,我只用它来进行单元测试。