Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python unittests中的Neo4j无常数据库_Python_Unit Testing_Neo4j - Fatal编程技术网

python unittests中的Neo4j无常数据库

python unittests中的Neo4j无常数据库,python,unit-testing,neo4j,Python,Unit Testing,Neo4j,我正在尝试为一个python项目创建单元测试,该项目将与Neo4j图形数据库接口 目前,我正在实现嵌入式图形数据库,但如果选择将其部署到web应用程序,则可能会迁移到REST接口。 我安装了嵌入式neo4j的v1.9rc2,通过虚拟环境中的pip安装 有人提到一个java类org.neo4j.test.TestGraphDatabaseFactory,这听起来非常符合我的想法。我目前正在读取和写入文件中的数据库,这是正常的,但我在ech测试后无法正确清理,该测试不包括调用shutil.rmtre

我正在尝试为一个python项目创建单元测试,该项目将与Neo4j图形数据库接口

目前,我正在实现嵌入式图形数据库,但如果选择将其部署到web应用程序,则可能会迁移到REST接口。 我安装了嵌入式neo4j的v1.9rc2,通过虚拟环境中的
pip
安装

有人提到一个java类
org.neo4j.test.TestGraphDatabaseFactory
,这听起来非常符合我的想法。我目前正在读取和写入文件中的数据库,这是正常的,但我在ech测试后无法正确清理,该测试不包括调用
shutil.rmtree
。。。还是应该这样做

另一种可能的方法是通过我的
TestCase
setUp
tearDown
方法为每个测试创建和关闭数据库

>>> import neo4j
>>> print neo4j.__version__
'1.9.c2'

最佳实践是使用setUp/tearDown为每个测试分别创建和关闭数据库,正如您所提到的


旁注:1.9RC2是相当过时的,因为从那时起已经修复了两个bug。考虑到升级到最新的稳定。

< P>这是他们在官方Python NeN4J驱动程序中所做的,它应该被认为是“一个很好的例子”,考虑到它来自哪里。
class ServerTestCase(TestCase):
""" Base class for test cases that use a remote server.
"""

known_hosts = KNOWN_HOSTS
known_hosts_backup = known_hosts + ".backup"

def setUp(self):
    if isfile(self.known_hosts):
        if isfile(self.known_hosts_backup):
            remove(self.known_hosts_backup)
        rename(self.known_hosts, self.known_hosts_backup)

def tearDown(self):
    if isfile(self.known_hosts_backup):
        if isfile(self.known_hosts):
            remove(self.known_hosts)
        rename(self.known_hosts_backup, self.known_hosts)

这是完整的源文件:

谢谢,我将更新我的python绑定,看看是否有任何怪癖得到解决。我想避免在每次测试中设置和关闭DB的时间成本,但是如果这是确保正确清理的唯一方法,那么在尝试从中构建最新的repo时获取构建错误也是如此。调用
mvn-e包
在此处生成错误。这是我第一次尝试使用maven构建一个项目,但maven似乎正在寻找neo4j JAR,但却找不到。有什么想法吗?关于你的第一条评论:使用
TestGraphDatabaseFactory.newNompanentDatabase()
相当便宜。最大的优点是,您可以在测试之间有一个干净的分隔。我经常看到一些测试相互干扰对代码库的可维护性是有害的。关于第二条评论:尝试
mvn安装
。如果出现问题,让我们在单独的一个线程中继续讨论。谢谢Stefan,我的问题在发表此评论后发布,代码已移动,但仍在回购协议中,尽管名称不同。您可以在中的
IntegrationTestCase
中找到它。