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第三方库


热门话题
java组织。openqa。硒。遥远的UnreachableBrowserException如何定义EXE路径?   java Camel AdviceWith不使用指定文件替换端点   基于字符串的java图像加载   Java中的启发式算法,计算8个谜题状态的线性冲突   java为什么不支持文件。probeContentType返回null   JPA@EntityListeners、@PrePersist和Spring@RepositoryEventHandler、@HandleBeforeSave之间的java差异   可能前缀的Java字符串到字符串[]   安装rJava | Makefile时发生java错误。全部:38:target’libjri的配方。所以他失败了   Java公共静态void main()   java如何覆盖txt文件中的某些单词   java如何获得循环中生成的字符值之和?   java Log4j创建另一个具有相同属性的appender   java如何在从Axis2 Web服务客户端通过代理服务器调用Web服务时设置代理设置?   在Windows上安装Elasticsearch时发生java错误   java如何向EditText组件添加TextChangedListener?