Python доходность внутри лямбда-функции - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь создать прибор 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, а не объект-генератор.

...