Тестирование нескольких конвейеров pyspark с различными переменными среды, загруженными в статический файл.Python

Программы на Python
Anonymous
Тестирование нескольких конвейеров pyspark с различными переменными среды, загруженными в статический файл.

Сообщение Anonymous »

Хорошо, у меня есть вопрос.
Для контекста: я новый специалист по контролю качества, работающий в команде, которая использует pyspark в качестве механизма ETL.
Я использую pytest в качестве среды тестирования.
У нас есть несколько конвейеров (ETL, с этого момента я буду использовать этот термин) в одном репозитории.
конечно, мы используем переменные среды при запуске конвейера (мы внедряем их через airflow).
Проблема в том, что переменные env загружаются в переменные Python в файл «RUN ENV», который является глобальным файлом для всех конвейеров.
Почему это проблема?
Когда я тестирую весь репозиторий через CI, первый тест конвейера инициализирует переменные среды (через conftest.py), а они, в свою очередь, загружаются в RUN ENV.
Это вызывает неприятную ситуацию. Когда конвейер завершает работу,
и начинается новый: RUN ENV уже настроен с исходными переменными env, которые я настроил, и теперь его следует настроить по-другому для следующий конвейер!
Я могу пойти дальше и переконфигурировать каждую переменную в RUN ENV (в соответствии с текущим загружаемым конфликтом) перед каждым тестом e2e — но это кажется неправильным.
Я знаю использование RUN ENV является законным: обычно из репозитория вызывается только один конвейер. Но как я могу обойти это аккуратно, чтобы сделать все понятным и разумным, чтобы RUN ENV можно было переконфигурировать при каждом втором тесте? Или, может быть, определено по-другому, чтобы эта проблема не имела значения?
Я пытался отделить большую часть кода от запускаемого env-файла, хотя мне не следует трогать чистый исходный кодПытался добавить env в фикстуры, а не просто в conftest, но на самом деле это не решает проблему, поскольку run env загружается слишком рано

Подробнее здесь: https://stackoverflow.com/questions/790 ... s-loaded-i

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