Я предпочитаю тестовый каталог верхнего уровня. Это действительно означает, что импорт становится немного более трудным. Для этого у меня есть два решения:
test_suite='tests.runalltests.suite'
в setup()
и можете запустить тесты просто: python setup.py test
PYTHONPATH=. python tests/runalltests.py
Вот то, как тот материал поддерживается кодом в M2Crypto:
, Если Вы предпочитаете запускать тесты с nosetests, Вы, возможно, должны были бы сделать что-то немного различное.
Я не пользователь или разработчик Android, но я думаю, что ответ, указанный в ссылке поток довольно приличный: есть аппаратная аппаратная клавиша «назад» на всех устройствах Android. Предполагается, что пользователи должны знать, что нужно нажимать «Назад» для выхода из любой активности, в которой они в данный момент участвуют.
Таким образом, дизайнеры пользовательского интерфейса считают ненужным включать кнопку возврата / отмены графического интерфейса. Это можно рассматривать как приложение UI принципа DRY ; если уже есть один способ что-то сделать, этого достаточно.
Ответ здесь - это аппаратный ключ. Я бы был осторожен с распространением принципа DRY на пользовательские интерфейсы. Есть множество случаев, когда вам нужно многократно забивать одну и ту же точку пользователю с помощью заголовков, основного текста, цветов и изображений.
Пользователи не «читают» пользовательский интерфейс так, как вы читаете роман. Сканируют, читают.
Я не могу говорить о других приложениях, но в моем случае все, что может вызвать ожидание потока пользовательского интерфейса, выполняется в отдельном потоке. Самое большее, что я сделаю, это покажу небольшой индикатор прогресса в строке заголовка, чтобы пользователь знал, что что-то происходит в фоновом режиме.