我正在使用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) 简短的问题是我可以从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
我收到此错误“没有 /Root 对象!- 这真的是 PDF 吗?” 使用我的 MAC 计算机和 Python 2.7 和PDFMiner版本 20110515。pdf 文件没有损坏,因为具有相同文件的相同程序可以在我的 PC 计算机上运行!我也尝试了很多 pdf,并且所有这些都存在此错误。关于我应该在我的 MAC 中更改什么以避免出现此错误的任何想法?
在Java Swing中,我们可以创建仅使用Java编码的GUI(例如在Eclipse中).使用NetBeans的工具箱将组件拖放到UI是可选的.
我想知道C#中是否有相同的概念.我可以将我的组件放入我的GUI并仅使用编码添加它们的行为吗?这样我觉得我可以更好地控制我的应用程序.
示例:我不想在工具箱中添加"mousehover"到我的按钮!相反,我想自己编写代码.我知道在哪里可以找到代码,但它是我应该编写那行代码的唯一地方吗?
请将Java Swing与C#进行比较.
我知道我可以使用箭头键,但我需要查看完整的历史列表,并可能将其导出到txt文件.
我遇到这种情况:
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对我很有用
不连接两个字符串会产生一个新字符串,应该将其视为字符串格式输入的普通字符串吗?