异步MongoDB的Pytest插件
pytest-async-mongodb的Python项目详细描述
这是一个基于pytest-mongodb和mongomock的pytest插件,它使您能够 测试依赖回调或基于未来的api进行非阻塞访问的代码 到MongoDB并希望某些数据存在。 它允许您为json/bson或yaml中的数据库集合指定fixture 格式。在引擎盖下我们使用MongoMock库,你应该 有关如何使用MongoDB模拟对象的文档,请参阅。如果合适的话 也可以使用真正的MongoDB服务器。
配置
如果不想将数据库设备放在包的顶级目录中 必须指定一个目录,pytest-async-mongodb在其中查找数据定义。
为此,请在 pytest.ini-文件放入a
[pytest]async_mongodb_fixture_dir= tests/unit/fixturesasync_mongodb_fixtures= fixture_1 fixture_2
pytest-async-mongodb然后查找以.yaml或.json结尾的文件 目录。
与pytest mongodb不同,不能指定与pymongo客户端的真正mongodb连接。
基本用法
配置pytest-async-mongodb以便它可以找到您准备好的设备之后 指定一些数据。不管您选择什么标记语言,都会提供数据 作为文档列表(dict)。正在插入这些文档的集合 into由fixture文件的文件名给定。例如:如果你有一个名为 players.yaml包含以下内容:
-name:Mariosurname:Götzeposition:striker-name:Manuelsurname:Neuerposition:keeper
你最终会得到一个集合players,它有上面的播放器定义 插入。如果fixture文件是json/bson格式,也可以使用bson特定的 像$oid、$date等类型。
通过使用async_mongodbfixture在测试函数中获取数据库 喜欢这样:
@pytest.mark.asyncioasyncdeftest_players(async_mongodb):manuel=awaitasync_mongodb.players.find_one({'name':'Manuel'})assertmanuel['surname']=='Neuer'
有关更多信息,请参阅mongomock文档。