MongoDB设备的Pytest插件

pytest-mongodb的Python项目详细描述


https://img.shields.io/pypi/v/pytest-mongodb.svghttps://travis-ci.org/mdomke/pytest-mongodb.svg?branch=masterhttps://img.shields.io/pypi/l/pytest-mongodb.svg

这是什么?

这是一个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。 此外,命令行选项已经统一,在某种程度上,多字选项 名称现在总是用破折号而不是下划线分隔。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javajexcel包装文本问题   EclipseJavaEnum缩进超过左括号。如何让它看起来更正常?   java有办法包含Tomcat 6 catalina。out和localhost。在网络应用的日志文件中记录内容?   java如何永久性地阻止JavaFX代码在eclipse中被突出显示为错误?   如何在java中优化两个for循环(for循环中的for循环)   java如何在我的windows机器上从jar文件创建mac osx的可执行文件   使用记忆化/动态规划的Java组合学   Java中的游荡对象垃圾收集   java为什么我在JSP和JDBC和MySQL中遇到连接失败错误   java轮询Pod的就绪状态   如何创建电子邮件并将其发送到Java中的特定地址?   java如何修复Dagger 2错误“。。。无法提供[…]”?   java Android单选按钮看起来太轻   Android Studio:开发在应用程序之间共享的通用java库