我有一个用python编写的Neo4j数据库支持的应用程序。
有谁知道对我的应用程序进行单元测试的最佳方法是什么?
我发现使用ImpermanentGraphDatabase可以在Java中轻松完成。在python中有类似的方法吗?
任何提示都表示赞赏。
答案 0 :(得分:2)
我要说最简单的方法就是完全嘲笑Neo4j。
我喜欢做的是将实体类简化为尽可能少的纯python功能。
即使您使用一些花哨的ORM来访问您的数据 - 例如在Django中 - 我仍然更喜欢创建一个pure-python类来表示我的模型并创建一个简约的dao方法,该方法将被模拟掉单元测试。这样我就不必在单元测试中触摸数据库了,我认为单元测试的行为应该如何。
话虽如此,如果您真的想在测试中使用neo4j功能,请查看官方neo4j-python-driver软件包的IntegrationTestCase。看起来它提供了一个继承集成测试的基类(因为如果你将数据库拉入测试,你实际上是在进行集成测试),因为它负责启动和关闭服务器之间的服务器。试运行。
答案 1 :(得分:0)
在python中只有3个与python3-neo4j-driver.x86_64
相关的主要玩家。
官方Neo4j Python驱动程序
https://github.com/neo4j/neo4j-python-driver/tree/1.6/test
python3-py2neo.noarch
提供对Neo4j
的访问的Python库
https://github.com/technige/py2neo/tree/v4/test
python3-neomodel.noarch
Neo4j的Python OGM
https://github.com/neo4j-contrib/neomodel/tree/master/test
# s = ... # your s string
ss = []
split = s.split()
for i, n in enumerate(split):
try:
if split[i+1] == '0':
pass
elif n != '0':
ss.append(n)
except IndexError:
pass
print ' '.join(ss)
答案 2 :(得分:0)
通过Neo4j社区提供了更多答案:https://community.neo4j.com/t/is-there-a-library-to-unit-test-graphdb-cypher-queries-using-python/8227/5
(轻松)使用libcypher-parser
您还可以将查询放入.cypher文件中,并使用诸如libcypher-parser(https://github.com/cleishm/libcypher-parser)之类的linter来检查查询是否有效。
(高级)启动Docker实例
使用一个简单的docker容器启动另一个Neo4j实例,然后您就可以测试自己的内心世界了……在那里(在此沙盒环境中):