Всем привет, дого пытался сам решить + почитывал чатик но всё равно остались вопросы некоторой степени сложности.
1) Многостродальный pytest-xdist не хочет выводить принты если запускается с -n auto(или любым другим количеством) (до поры до времени и без этого жилось норм но сейчас подпёрло)
2) При использовании xdist , фикстуры scope>function(class,session и т.д) игнорируются и запускаются каждая по разу на своём потоке, и тут писали и в документации- закидываем в локфайл и возвращаем каждому потоку уже текущий. – Это хорошо работает до тех пор пока у нас нет yield и фикстура должна отработать после завершения теста как понять кто будет последний. Пришлось накостылить так чтоб ванчале все потоки отмечались что зашли а последний уходящий уже гасит свет, получилось антиизящно но работает, м.б есть всё таки красивое решение?
2.5) Хуки и фикстуры, порядок фикстур определяется того что ей нужно для вызова и нужно ли что то, а взаимодействие хуков и фикстур, что будет раньше при
@pytest.hookimpl(tryfirst=True, hookwrapper=True)
3) result,data=mail.fetch(ids,"(RFC822)")
raw_email=data[0][1]
raw_email_string = raw_email.decode('utf-8')
imaplib , хожу на почту и дёргаю данные письма каждый со своим адресом, на который приходит единственное письмо, если запускать в один поток то норм.
Проблемы начинаются если писем несколько и проверяешь перезаписывая ids, или если запускаешь с тем же xdist , в какой то момент выплёвавает ошибку на decode говорит что не может перевести int (как он вообще туда попал не понимаю), из догадок что этот fetch копает до конца как будто, получилось «решить» отлавливанием typeerror и загоняя его искать то что мне нужно, опять же выглядит как лютый костыль.
Из того что смотрел fetch в основном тянут один раз и всё работает.
Как предположение — всё из за того что одним соединением imap пользуются все потоки и кто успел тот и схавал. Могу ли как то запустить свой сокет на каждый поток ?