MongoDB设备的Pytest插件
pytest-mongodb的Python项目详细描述
这是什么?
这是一个pytest插件,它使您能够测试依赖于 与MongoDB的数据库连接,并希望存在某些数据。 它允许您为json/bson或yaml中的数据库集合指定fixture 格式。在引擎盖下,我们使用mongomock库,您应该 有关如何使用MongoDB模拟对象的文档,请参阅。如果合适的话 也可以使用真正的MongoDB服务器。
注意:此项目已按顺序从humongous重命名为pytest-mongodb。 为了符合pytest插件命名约定并更容易在 python包索引。有关详细信息,请参见migration section。
配置
如果不想将数据库设备放在包的顶级目录中 必须指定一个目录,pytest-mongodb在其中查找数据定义。
为此,请在 pytest.ini-文件放入a
[pytest]mongodb_fixture_dir= tests/unit/fixtures
pytest-mongodb然后查找以.yaml或.json结尾的文件 目录。
您还可以选择使用真正的mongodb服务器进行测试。那样的话 如果您 不想使用默认值(localhost和no credentials)。使用 在pytest.ini中遵循配置值以使设置适应 您的需要:
[pytest]mongodb_engine=pymongomongodb_host=mongodb://user:passwd@server.tldmongodb_dbname=mydbname
基本用法
配置pytest-mongodb以便它可以找到您准备好的设备之后 指定一些数据。不管您选择什么标记语言,都会提供数据 作为文档列表(dict)。正在插入这些文档的集合 into由fixture文件的文件名给定。例如:如果你有一个名为 players.yaml包含以下内容:
-name:Mariosurname:Götzeposition:striker-name:Manuelsurname:Neuerposition:keeper
你最终会得到一个集合players,它有上面的播放器定义 插入。如果fixture文件是json/bson格式,也可以使用bson特定的 像$oid、$date等类型。
通过使用mongodbfixture在测试函数中获取数据库 喜欢这样:
deftest_players(mongodb):assert'players'inmongodb.collection_names()manuel=mongodb.players.find_one({'name':'Manuel'})assertmanuel['surname']=='Neuer'
有关更多信息,请参阅mongomock文档。
如果你想跳过特定的测试如果引擎是MongoMock引擎你可以这么做 喜欢这样:
frompytest_mongodb.pluginimportmongo_enginefrompytestimportmark@mark.skipif(mongo_engine()=='mongomock',reason="mongomock does not support that")deftest_players(mongodb):assert'players'inmongodb.collection_names()manuel=mongodb.players.find_one({'name':'Manuel'})assertmanuel['surname']=='Neuer'
从巨大的
迁移在将包名从humongous迁移到pytest-mongodbmost的过程中 以前以humongous_为前缀的配置值 重命名为前缀为mongodb_的对应项。唯一值得注意的例外是 humongous_basedirconfig值,现在命名为mongodb_fixture_dir。 此外,命令行选项已经统一,在某种程度上,多字选项 名称现在总是用破折号而不是下划线分隔。