Используйте следующий код:
all_pageList = driver.find_elements_by_xpath("//li[contains(@class,'artdeco-pagination__indicator')]")
driver.find_elements_by_xpath("//li[contains(@class,'artdeco-pagination__indicator')]//button//span")[len(all_pageList)-1].text
print(len(all_pageList))
Создайте свою собственную malloc обертку, которая случайным образом возвратит пустой указатель вместо допустимого указателя. Ну, или который последовательно перестал работать, если Вы хотите к модульному тесту.
В операционных системах, которые превышают возможности памяти (например, Linux или Windows), просто не возможно обработать ошибки из памяти. malloc может возвратить допустимый указатель и позже, когда Вы пытаетесь разыменовать его, Ваша операционная система может решить, что Вы вне памяти и уничтожаете процесс.
http://www.reddit.com/comments/60vys/how_not_to_write_a_shared_library/ является хорошей рецензией на этом.
Можно записать собственную ложную библиотеку с тем же интерфейсом как сторонняя библиотека вместо него. Можно также использовать LD_PRELOAD для переопределения выбранных функций сторонней библиотеки.
Я могу дать Linux (возможно, POSIX) определенная версия: __ malloc_hook, __ realloc_hook, __ free_hook. Они объявляются в malloc.h.
РЕДАКТИРОВАНИЕ: Немного разработки: это указатели функции (см. malloc.h и их страницу справочника для точного объявления), но остерегайтесь: это не точно стандарты, просто расширения GNU. Таким образом, если мобильность является проблемой, не используйте это.
Немного менее зависимое от платформы решение могло бы состоять в том, что Вы объявляете malloc макрос. Если Вы тестируете, это называет рычаг и реальный malloc.
memhook.h:
#define malloc(s) (my_malloc(s))
memhook.c:
#include "memhook.h"
#undef malloc
#include <stdlib.h>
и т.д.
можно использовать это, чтобы обнаружить утечки, случайным образом привести выделение к сбою, и т.д.
Кроме того, необходимо использовать Valgrind, чтобы протестировать все это и получить реальные полезные отчеты о поведении памяти программы
Вы хотите команду ulimit в ударе. Попробуйте
help ulimitпри приглашении оболочки удара.
(Как дополнение к некоторым предыдущим ответам)
Контроль "Электрический Забор" для примера библиотеки malloc-прерывания, которой можно пользоваться с исполняемым файлом (использование приема LD_PRELOAD, например).
, Как только Вы прервали malloc, можно использовать то, что Вы хотите инициировать отказы. Случайным образом инициированный отказ был бы хорошим стресс-тестом для различных частей системы. Вы могли также изменить вероятность отказа на основе объема памяти, который требуют.
Ваш - интересная идея, между прочим, ясно что-то, что я хотел бы сделать на части моего кода...
Вы могли бы хотеть посмотреть на часть восстановления, ориентированного на вычислительные сайты, такой как группа ПТИЦЫ РУХ Беркли/Стэнфорда. Я услышал некоторых из этих людей разговор прежде, и они используют код для случайного введения ошибок во времени выполнения C. Существует ссылка на их инструмент FIT у основания их страницы.
Можно использовать ulimit
для ограничения суммы ресурсов, которые пользователь может использовать, включая память. Таким образом, Вы создаете проверочного пользователя, ограничиваете их использование памяти чем-то как раз для запуска программы и часов, это умирает:)
Пример:
ulimit -m 64
Устанавливает предел памяти 64 КБ.
Посмотрите , как sqlite3 делает это . Они выполняют обширное модульное тестирование, в том числе тестирование нехватки памяти.
Вы также можете посмотреть их страницу на malloc , особенно раздел 4.0 .