用fixture模拟mongo数据库
humongous的Python项目详细描述
这是什么?
这是一个pytest插件,它使您能够测试依赖于 与MongoDB的数据库连接,并希望存在某些数据。 它允许您为json/bson或yaml中的数据库集合指定fixture 格式。在引擎盖下,我们使用mongomock库,您应该 有关如何使用MongoDB模拟对象的文档,请参阅。如果合适的话 也可以使用真正的MongoDB服务器。
配置
如果您不想将fixture放在包的顶层目录中 您必须指定一个目录,其中humongus查找您的数据定义。
为此,请在 pytest.ini-文件放置a
[pytest]humongous_basedir= tests/unit/fixtures
humongus然后查找以.yaml或.json结尾的文件 目录。
您还可以选择使用真正的mongodb服务器进行测试。那样的话 如果您 不想使用默认值(localhost和no credentials)。使用 按照pytest.ini中的配置值调整设置 您的需要:
[pytest]humongous_engine=pymongohumongous_host=mongodb://user:passwd@server.tldhumongous_dbname=mydbname
基本用法
在您配置好humongous以便它可以找到您准备好的设备之后 指定一些数据。不管您选择什么标记语言,都会提供数据 作为文档列表(dict)。正在插入这些文档的集合 into是由fixutre文件的文件名给定的。例如:如果你有一个名为 players.yaml包含以下内容:
-name:Mariosurname:Götzeposition:striker-name:Manuelsurname:Neuerposition:keeper
你最终会得到一个具有以上玩家定义的集合 插入。如果fixture文件是json/bson格式,也可以使用bson特定的 像$oid,$date等类型。
通过使用humongousfixture在测试函数中获取数据库 喜欢这样:
deftest_players(humongous):assert"players"inhumongous.collection_names()manuel=humongous.players.find_one({"name":"Manuel"})assertmanuel["surname"]=="Neuer"
有关更多信息,请参阅mongomock文档。