Загрузка документа
#1
Отправлено 21 июня 2018 - 19:48
#2
Отправлено 21 июня 2018 - 20:05
#3
Отправлено 22 июня 2018 - 04:08
#4
Отправлено 22 июня 2018 - 05:12
Ничего не мешает, кроме того что файл может быть не скачен
В каком смысле он может быть не скачан?
Я использую такой вариант:
После нажатия кнопки/ссылки начинается скачивание файла (в течении 2-3 сек).
Сам файл может качаться при этом любое время.
Ждём условные 2-3 секунды изменения количества файлов в директории загрузки.
Если по истечении 2-3 секунд количество файлов не изменилось - значит что-то пошло не так и скачивание не началось.
Если же началось, то количество файлов уже изменилось, даже если файл ещё не скачался.
Вычитаем из одной коллекции другую, получаем одно вхождение - это наш новый файл.
Далее ждём, пока он скачается целиком.
Здесь вариантов может быть много:
1) Ждём пока у файла расширение изменится с .download/.temp/ещё какого-то на любое другое кроме этих
2) Ждём пока у файла будет конкретное расширение, если вы знаете, каким оно должно быть после скачивания.
3) Ждём пока у файла будет ожидаемый размер.
4) Итд.
#5
Отправлено 22 июня 2018 - 05:59
Александр спасибо за ответ.
В том то и дело что файл может быть не скачан. Кликаем на download а в ответ тишина.
Насчет подождать условные 2-3 секунды - вот тут то и основная загвоздка, что по моим наблюдениям файл начинает скачиваться как мгновенно после нажатия кнопки, так и через 10 секунд :)), да да через 10(редко, но бывает и дольше), почему так это не ко мне, имеем что имеем, по этому ставить в "лоб" ожидание 10 секунд для каждого моего документа (а их около 200) не совсем камильфо, собственно я и думал что есть уже какое-то "умное" решение этого ожидания.
В любом случае, спасибо что отозвались.
#6
Отправлено 22 июня 2018 - 06:31
Александр спасибо за ответ.
В том то и дело что файл может быть не скачан. Кликаем на download а в ответ тишина.
Насчет подождать условные 2-3 секунды - вот тут то и основная загвоздка, что по моим наблюдениям файл начинает скачиваться как мгновенно после нажатия кнопки, так и через 10 секунд :)), да да через 10(редко, но бывает и дольше), почему так это не ко мне, имеем что имеем, по этому ставить в "лоб" ожидание 10 секунд для каждого моего документа (а их около 200) не совсем камильфо, собственно я и думал что есть уже какое-то "умное" решение этого ожидания.
В любом случае, спасибо что отозвались.
Ну здесь по-другому не получится.
Да и это не совсем в лоб.
Вы же не будете ждать каждый раз 10 секунд. Если файл начал качаться за 1 секунду - то ожидание прервется и начнется другое - ожидание завершения скачивания файла.
Если у вас файлы начинают качаться спустя 10 секунд после клика по кнопке - это проблема разработки, надо идти к ним/к начальству и просить оптимизировать.
Предполагаю, что после нажатия кнопки "Скачать" начинается формирование файла, и после того как он сформируется - начинается скачивание, отсюда и различие в ожидании.
#7
Отправлено 22 июня 2018 - 09:36
Александр спасибо за ответ.
В том то и дело что файл может быть не скачан. Кликаем на download а в ответ тишина.
Насчет подождать условные 2-3 секунды - вот тут то и основная загвоздка, что по моим наблюдениям файл начинает скачиваться как мгновенно после нажатия кнопки, так и через 10 секунд :)), да да через 10(редко, но бывает и дольше), почему так это не ко мне, имеем что имеем, по этому ставить в "лоб" ожидание 10 секунд для каждого моего документа (а их около 200) не совсем камильфо, собственно я и думал что есть уже какое-то "умное" решение этого ожидания.
В любом случае, спасибо что отозвались.
Вы же не будете ждать каждый раз 10 секунд. Если файл начал качаться за 1 секунду - то ожидание прервется и начнется другое - ожидание завершения скачивания файла.
Опять же, а если файл не стал скачиваться? Сколько его ждать? И если ждать то получается нужно опять принудительно выставлять максимальное время ожидания...
#8
Отправлено 22 июня 2018 - 09:59
для каждого моего документа (а их около 200)
саму генерацию файлов надо проверять не через Е2Е тесты, а например на уровне юнит тестов. тогда всё будет быстро и надёжно
а на верхнем уровне Е2Е тестов достаточно проверить что скачивание работает, просто один тест скачивает один файл
#9
Отправлено 22 июня 2018 - 11:11
Опять же, а если файл не стал скачиваться? Сколько его ждать? И если ждать то получается нужно опять принудительно выставлять максимальное время ожидания...
Если файл не стал скачиваться, то это дефект, со всеми вытекающими. Сколько ждать его - это вам должно быть известно, у меня на проекте скачивание начинается в пределах 3 секунд, я это время и жду.
Если файл начал качаться позже - это уже дефект.
Если один тест зафейлился по этой причине - можно сделать маркер, чтобы другие не запускались, если сломан механизм скачивания файла.
У вас в любом случае при почти любых проверках, где результат появляется не моментально есть неявные ожидания. Почему же вас это ожидание смущает именно при скачивании файла, ведь это такая же абсолютно проверка?
Либо воспользуйтесь советом человека выше.
#10
Отправлено 22 июня 2018 - 12:23
Спасибо за советы, в принципе картина ясна. Мне самое главное было понять как сделать правильно, и не городить огородов.
#11
Отправлено 22 июня 2018 - 12:30
Спасибо за советы, в принципе картина ясна. Мне самое главное было понять как сделать правильно, и не городить огородов.
Роман правильно написал - проверять генерацию и содержимое файла лучше через юнит-тесты - это должны делать разработчики.
Если такие юнит-тесты не написаны, значит разработчики забивают на юнит-тесты.
#12
Отправлено 22 июня 2018 - 12:59
Спасибо за советы, в принципе картина ясна. Мне самое главное было понять как сделать правильно, и не городить огородов.
Роман правильно написал - проверять генерацию и содержимое файла лучше через юнит-тесты - это должны делать разработчики.
Если такие юнит-тесты не написаны, значит разработчики забивают на юнит-тесты.
Да нет, в проверку именно генерации файла и его содержимого я и не лезу, просто периодически от поддержки приходят жалобы на не скачивание документа, да и сам я это отлавливаю...
#13
Отправлено 22 июня 2018 - 13:22
Да нет, в проверку именно генерации файла и его содержимого я и не лезу, просто периодически от поддержки приходят жалобы на не скачивание документа, да и сам я это отлавливаю...
"жалоба на скачивание" в основном может происходить из-за двух разных багов:
1. файл не сгенерился в бэкенде, но функция загрузки работает
2. файл сгенерился, но функция загрузки сломана
для тестирования функции загрузки достаточно одного теста, не надо делать их сотни, они будут медленные хрупкие и бесполезные
а тесты на генерацию должны быть юнит-тестами, вот там их надо создать по одному тесту на каждый тип файла-отчёта
#14
Отправлено 02 июля 2018 - 07:30
Ничего не мешает, кроме того что файл может быть не скачен
В каком смысле он может быть не скачан?
Я использую такой вариант:
После нажатия кнопки/ссылки начинается скачивание файла (в течении 2-3 сек).
Сам файл может качаться при этом любое время.
Ждём условные 2-3 секунды изменения количества файлов в директории загрузки.
Если по истечении 2-3 секунд количество файлов не изменилось - значит что-то пошло не так и скачивание не началось.
Если же началось, то количество файлов уже изменилось, даже если файл ещё не скачался.
Вычитаем из одной коллекции другую, получаем одно вхождение - это наш новый файл.
Далее ждём, пока он скачается целиком.
Здесь вариантов может быть много:
1) Ждём пока у файла расширение изменится с .download/.temp/ещё какого-то на любое другое кроме этих
2) Ждём пока у файла будет конкретное расширение, если вы знаете, каким оно должно быть после скачивания.
3) Ждём пока у файла будет ожидаемый размер.
4) Итд.
Чем меньше вы работаете с окружением, а не с тестируемым приложением тем лучше. В вашем случае, я бы брал ссылку на файл и качал его напрямую питоном сверяя хеш полученного и эталонного файла, обрабатывая исключения стандартной для 3 его питона http библиотекой.
#15
Отправлено 02 июля 2018 - 08:11
Чем меньше вы работаете с окружением, а не с тестируемым приложением тем лучше. В вашем случае, я бы брал ссылку на файл и качал его напрямую питоном сверяя хеш полученного и эталонного файла, обрабатывая исключения стандартной для 3 его питона http библиотекой.
К сожалению, установка заказчика - проверять скачивание файла через сам сайт и сверять его содержимое после этого с БД.
#16
Отправлено 02 июля 2018 - 08:16
Чем меньше вы работаете с окружением, а не с тестируемым приложением тем лучше. В вашем случае, я бы брал ссылку на файл и качал его напрямую питоном сверяя хеш полученного и эталонного файла, обрабатывая исключения стандартной для 3 его питона http библиотекой.
К сожалению, установка заказчика - проверять скачивание файла через сам сайт и сверять его содержимое после этого с БД.
ну моё предложение не нарушает установки заказчика.
#17
Отправлено 02 июля 2018 - 08:28
Чем меньше вы работаете с окружением, а не с тестируемым приложением тем лучше. В вашем случае, я бы брал ссылку на файл и качал его напрямую питоном сверяя хеш полученного и эталонного файла, обрабатывая исключения стандартной для 3 его питона http библиотекой.
К сожалению, установка заказчика - проверять скачивание файла через сам сайт и сверять его содержимое после этого с БД.
ну моё предложение не нарушает установки заказчика.
Ну как же не нарушает - скачивание файла по ссылке != скачивание файла по клику кнопки
#18
Отправлено 02 июля 2018 - 09:27
Чем меньше вы работаете с окружением, а не с тестируемым приложением тем лучше. В вашем случае, я бы брал ссылку на файл и качал его напрямую питоном сверяя хеш полученного и эталонного файла, обрабатывая исключения стандартной для 3 его питона http библиотекой.
К сожалению, установка заказчика - проверять скачивание файла через сам сайт и сверять его содержимое после этого с БД.
ну моё предложение не нарушает установки заказчика.
Ну как же не нарушает - скачивание файла по ссылке != скачивание файла по клику кнопки
Не буду вас переубеждать в этом.
Добавлю лишь, что реализуя проверку локального диска вы получаете совершенно не контролируемую систему, так как вы не знаете о том, что ответил сервер при нажатии на кнопку, были ли в процессе скачивания какие либо проблемы, как долго ждать до завершения скачивания и тому подобные проблемы которые от вас потребуют такое кол-во костылей, что полагаться на результат теста станет невозможно.
Вы не понимая проблемы пытаетесь автоматизировать условия её воспроизведения, вместо того, чтобы разобраться в сути и автоматизировать каждую часть процесса необходимым инструментарием.
#19
Отправлено 02 июля 2018 - 09:42
Добавлю лишь, что реализуя проверку локального диска вы получаете совершенно не контролируемую систему, так как вы не знаете о том, что ответил сервер при нажатии на кнопку, были ли в процессе скачивания какие либо проблемы, как долго ждать до завершения скачивания и тому подобные проблемы которые от вас потребуют такое кол-во костылей, что полагаться на результат теста станет невозможно.
Не буду вас переубеждать в этом.
Вы не понимая проблемы пытаетесь автоматизировать условия её воспроизведения, вместо того, чтобы разобраться в сути и автоматизировать каждую часть процесса необходимым инструментарием.
Очень странное у вас мышление, честно говоря.
У меня кейс E2E. А вы мне предлагаете зачем-то тестировать саму возможность скачивания. Похоже это вы не понимаете о чем речь идёт.
Как я могу не знать, что ответил мне сервер, нажимая на кнопку, если я после нажатия этой кнопки вполне конкретно ожидаю начала скачивания файла и заведомо знаю, что должно быть внутри него, включая его размер?
Покрывать юнит-тестами саму возможность скачивания должен разработчик, это он разработал эту функцию. Не надо переваливать это на плечи автоматизатора.
Интересно, а "Как долго ждать до завершения скачивания по клику" чем-то отличается от "Как долго ждать до завршения скачивания по прямой ссылке"?
Так-то это вообще не константа, может у вас вообще интернета не будет в момент скачивания.
У меня нет ни одной проблемы пока что со скачиванием файлов через клик по кнопке, и я ни секунды лишней не жду.
Все тесты прекрасно могут хоть в 100 потоков параллельно качать файлы в одну и ту же папку и не мешать друг другу.
Если для вас это проблема и нужно городить костыли, то не надо это проецировать на других.
А вот если скачивание по кнопке отломается, но будет работать по прямой ссылке, о которой пользователь естественно не знает - что вы будете говорить в этом случае? Что само скачивание работает? Ну так а толку от этого, если пользователь это скачивание запустить не может?
Как выше уже писали - проверить что скачивание по кнопке работает - достаточно один раз, если оно вызывается из одного и того же места.
#20
Отправлено 02 июля 2018 - 09:59
Воу-воу! Полегче!
Лично вас, я задеть не хотел.
Тяжело просто бороться с поверхностными знаниями. Ну да кто я такой, даже не айтишник... . Мне уже не интересны бои в интернет пространстве. Так что желаю вашим тестам быть безотказными и покладистыми всегда и везде! =)
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных