python модульные тесты застряли при удалении всех таблиц в базе данных mysql - PullRequest
0 голосов
/ 26 марта 2020

У меня есть пара модульных тестов в классе Python, каждый из которых проходит по отдельности. Большинство тестов создают несколько таблиц в тестовой базе данных mysql, и перед каждым тестом в методе setUp тестовая база данных очищается с помощью серии команд

 set FOREIGN_KEY_CHECKS = 0;
 select concat('drop table ', table_name, ';') as 'command' 
    from information_schema.tables where table_schema = 'test_db';
 set FOREIGN_KEY_CHECKS = 1;

, выданных методом execute SQLAlchemy двигатель. Когда я выполняю весь тестовый класс, после нескольких тестов, выполнение застревает в методе «очистки», обычно после того, как таблица, которая была целью ссылок на внешний ключ, была удалена, но она не кажется полностью детерминированной c, а также зависит от порядка выполнения тестов. Когда я запускаю ожидающие команды отбрасывания непосредственно в строке mysql -команды (после уничтожения запущенных модульных тестов), они успешно выполняются, поэтому, очевидно, это не чистая MySql -задача. К сожалению, мне не удалось создать минималистичный пример c, иллюстрирующий проблему. У кого-нибудь есть идея, в чем причина? Также были бы полезны предложения, что еще я мог бы попробовать отладить.

Редактировать: То же самое происходит, когда я использую Metadata.drop_all () вместо raw sql.

...