mongodb を使用するモジュールがあり、その統合テストを作成しています。ここの例に基づいてテストを行っています。
私が見ているエラーはOperationFailure: command SON([('listDatabases', 1)]) failed: need to login
、私が電話したときですconn.database_names()
問題は、ログイン方法がわからないことです。--username および --password 引数を subprocess.Popen に追加しようとしましたが、うまくいきませんでした。pymongo データベース オブジェクトには認証メソッドがありますが、pymongo.Connection オブジェクトには認証メソッドがありません。
Popen から mongo を起動するときに認証する方法、またはデータベース オブジェクトにアクセスできるようにこれを再構築する方法はありますか?
class MongoTemporaryInstance(object):
_instance = None
@classmethod
def get_instance(cls):
if cls._instance is None:
cls._instance = cls()
atexit.register(cls._instance.shutdown)
return cls._instance
def __init__(self):
self._tmpdir = tempfile.mkdtemp()
self._process = subprocess.Popen(['mongod', '--bind_ip', 'localhost',
'--port', str(MONGODB_TEST_PORT),
'--dbpath', self._tmpdir,
'--nojournal', '--nohttpinterface',
'--noauth', '--smallfiles',
'--syncdelay', '0',
'--maxConns', '10',
'--nssize', '1', ],
stdout=open(os.devnull, 'wb'),
stderr=subprocess.STDOUT)
for i in range(3):
time.sleep(0.1)
try:
self._conn = pymongo.Connection('localhost', MONGODB_TEST_PORT)
except pymongo.errors.ConnectionFailure:
continue
else:
break