Я пытаюсь создать прибор pytest
, который принимает аргумент и дает pymongo.MongoClient
:
@pytest.fixture(scope='session')
def mongo_test_db(django_db_setup) -> Database:
""" Fixture to use in tests that require access to Mongo
Drops database first to ensure a clean state.
Depends on the external Mongo process running in the background
Changes setting MONGO_CONNECTION to MONGO_TEST_CONNECTION defined in settings.
"""
def _generate(db_name):
assert settings.MONGO_TEST_CONNECTION, "MONGO_TEST_CONNECTION not defined"
settings.MONGO_CONNECTION = settings.MONGO_TEST_CONNECTION
client = MongoClient(settings.MONGO_CONNECTION)
client[db_name].command("dropDatabase")
yield client[db_name]
client[db_name].command("dropDatabase")
return _generate
Код действительно работает, но вместо получения фактического значения генератора я получаю вместо этого объект-генератор; поэтому мне нужно вызвать next(mongo_test_db("test"))
вместо mongo_test_db("test")
. Я хочу просто вызвать mongo_test_db ("test") и получить фактический клиент pymon go, а не объект-генератор.