Pytest — используйте генератор для mark.parameterizePython

Программы на Python
Ответить
Anonymous
 Pytest — используйте генератор для mark.parameterize

Сообщение Anonymous »

У меня есть база данных mongo с очень большой коллекцией, на которой мне нужно запустить тесты с помощью Pytest.
Я пытаюсь сделать это обычным путем с использованием декторатора mark.parameterize, но с объектом курсора pymongo.cursor:

Код: Выделить всё

def get_all_data():
return db["collection"].find({}) # query to retrieve all documents from the collection

@pytest.mark.parametrize("doc", get_all_data())
def test_1(doc):
assert doc["val"] == 1
....
Проблема этого кода заключается в том, что pytest на этапе сбора данных перед запуском тестов автоматически преобразует генератор в список. Мне это не нужно по двум причинам:
  • Это очень медленно из-за того, что коллекция очень велика.
  • Переполнение стека — в любом случае недостаточно оперативной памяти для загрузки всех этих данных.
Это означает, что я не могу использовать mark.parameterize, однако как я могу использовать генератор для запуска тестов по одному за раз, а не загружать все сразу в память? Возможно ли это вообще с Pytest?

Подробнее здесь: https://stackoverflow.com/questions/701 ... arametrize
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»