小编Mah*_*aly的帖子

如何模拟mongodb for python unittests?

我正在使用mock适用于Python 2.7的模块来模拟其他功能并使用

unittest 用于编写单元测试。

我想知道模拟MongoDB是否与使用模拟功能(mock.patch被调用的功能?)不同?或者我需要为此使用另一个不同的包?

我不认为我想运行测试mongodb实例。我只需要一些速度数据并能够调用pymongo功能。我只是在想是否有一种方法可以为模块编写模拟(例如pymongo),或者mock模块可以实现任何目标,因此我有点迷失了。

因此,如果您可以提供示例或教程,请多加赞赏。

测试代码

from pymongo import MongoClient

monog_url = 'mongodb://localhost:27017'
client = MongoClient(monog_url)
db = client.db

class Dao(object):
   def __init__(self):
      pass

   def save(self, user):
      db_doc = {
        'name': user.name,
        'email': user.email
      }
      db.users.save(db_doc)

   def getbyname(self, user):
      db_doc = {
        'name': user.name,
      }
      return db.users.find(db_doc)
Run Code Online (Sandbox Code Playgroud)

为了测试这一点,我真的不想要测试mongodb并运行它!而且,我想我不想模拟db.userssave和db.users.find,因为我希望实际上能够检索我保存的数据并确保它在db中。我认为我需要为记忆中的每个模型创建一些灯具并使用它们。我是否需要外部工具来做到这一点?

我正在考虑保留一些虚假数据,只是不知道如何正确处理它。

users = { 
    {'name' : 'Kelly', 'email' : 'kelly@gmail.com'},
    {'name': 'Sam', 'email': 'sam@gmail.com'}
}
Run Code Online (Sandbox Code Playgroud)

python unit-testing mocking mongodb pymongo

11
推荐指数
3
解决办法
7923
查看次数

docker在另一个端口上运行mongo图像

简短的问题是我可以从mongo运行mongo:在27017以外的其他端口上运行最新图像(例如在27018上?)

如果是,我如何在docker-compose.yml文件中执行此操作,以便能够键入以下命令:

docker-compose run
Run Code Online (Sandbox Code Playgroud)

更长的故事:

我有一个在AWS EC2实例中运行的应用程序.该应用程序包含一个mongodb和一个Web应用程序.现在我决定将这个应用程序的一部分分离到自己的微服务器中,这个微服务运行在docker容器中的同一个AWS中(两个容器一个用于另一个mongo,一个用于web应用程序).我认为问题是我不能在端口27017上运行mongodb,同时在端口27017上的docker容器内运行另一个mongodb.对吗?我有这个假设,因为当我停止第一个mongo(我的app mongo)时,我的docker mongo正常工作.

所以我试图制作第二个mongo(在docker容器内的那个),在另一个端口和我的第二个web应用程序(另一个docker conianter中的那个)中运行,以在另一个端口上监听mongo.这是我尝试更改docker-compose文件:

version: '2'
services:
    webapp:
        image: myimage
        ports:
            - 3000:3000

    mongo:
        image: mongo:latest
        ports:
            - 27018:27018
Run Code Online (Sandbox Code Playgroud)

在我的新应用程序中,我将mongo url更改为:

monog_url = 'mongodb://mongo:27018'
client = MongoClient(monog_url, 27018)
Run Code Online (Sandbox Code Playgroud)

好吧,如果我说同样的话:

monog_url = 'mongodb://mongo:27018'
client = MongoClient(monog_url)
Run Code Online (Sandbox Code Playgroud)

但是当我运行docker-compose运行时,它仍然无效,我收到以下错误:

ERROR: for mongo  driver failed programming external
connectivity on endpoint: Error starting userland proxy:
listen tcp 0.0.0.0:27017: bind: address already in use
Run Code Online (Sandbox Code Playgroud)

要么

pymongo.errors.ServerSelectionTimeoutError:
mongo:27018: [Errno -2] Name or service not known
Run Code Online (Sandbox Code Playgroud)

amazon-ec2 mongodb amazon-web-services docker docker-compose

8
推荐指数
3
解决办法
2万
查看次数

Python PDFMiner 错误:“没有 /Root 对象!-这真的是 PDF 吗?”

我收到此错误“没有 /Root 对象!- 这真的是 PDF 吗?” 使用我的 MAC 计算机和 Python 2.7 和PDFMiner版本 20110515。pdf 文件没有损坏,因为具有相同文件的相同程序可以在我的 PC 计算机上运行!我也尝试了很多 pdf,并且所有这些都存在此错误。关于我应该在我的 MAC 中更改什么以避免出现此错误的任何想法?

python pdf macos pdf-parsing document-root

5
推荐指数
1
解决办法
3026
查看次数

不使用Visual Studio GUI设计器(工具箱)构建C#GUI

在Java Swing中,我们可以创建仅使用Java编码的GUI(例如在Eclipse中).使用NetBeans的工具箱将组件拖放到UI是可选的.

我想知道C#中是否有相同的概念.我可以将我的组件放入我的GUI并仅使用编码添加它们的行为吗?这样我觉得我可以更好地控制我的应用程序.

示例:我不想在工具箱中添加"mousehover"到我的按钮!相反,我想自己编写代码.我知道在哪里可以找到代码,但它是我应该编写那行代码的唯一地方吗?

请将Java Swing与C#进行比较.

c# eclipse swing netbeans visual-studio

2
推荐指数
1
解决办法
9666
查看次数

如何在Windows(7)命令提示符中导出命令的历史记录?

我知道我可以使用箭头键,但我需要查看完整的历史列表,并可能将其导出到txt文件.

windows command-prompt

2
推荐指数
1
解决办法
4858
查看次数

串联字符串上的字符串格式?

我遇到这种情况:

msg = 'stackoverflow is {subject}'+ ' for me'.format(subject='useful')

msg = 'stackoverflow is {subject}'.format(subject='useful') + ' for me'
Run Code Online (Sandbox Code Playgroud)

第一个打印:

stackoverflow对我来说是{subject}

第二个打印:

stackoverflow对我很有用

不连接两个字符串会产生一个新字符串,应该将其视为字符串格式输入的普通字符串吗?

python string string-formatting

2
推荐指数
1
解决办法
62
查看次数