Существует много платформ модульного теста JavaScript там (jsUnit, scriptaculous...), но jsUnit является единственным, я знаю, что это может использоваться с автоматизированной сборкой.
при выполнении 'истинного' модульного теста Вам не должна быть нужна поддержка Ajax. Например, при использовании RPC ajax платформа, такая как DWR можно легко записать ложную функцию:
function mockFunction(someArg, callback) { var result = ...; // some treatments setTimeout(
function() { callback(result); }, 300 // some fake latency
); }
И да, JsUnit действительно обрабатывают тайм-ауты: Время Моделирования в Тестах jsUnit
Я думаю, что вы на самом деле ищете специальную переменную __name__
. Из документации Python :
В модуле имя модуля (в виде строки) доступно в качестве значения глобальной переменной
__name__
.
Если вы запустите файл напрямую, это имя будет __main__
. Однако, если вы находитесь в модуле (как в случае, когда вы используете флаг -m или любой другой импорт), это будет полное имя модуля.
Единственный способ - это манипулирование путями с помощью os.getcwd (), os.path, file и еще много чего, как вы упомянули.
На самом деле это может быть хороший патч для реализации optparse / argparse (который в настоящее время заменяет «% prog» в строке использования на os.path.basename (sys.argv [0]) - вы используя optparse, верно? -), то есть другую специальную строку, например% module.
Не могу понять, почему существует такое ограничение, как «python -m a.b.c». Конечно, фактический модуль может быть внутри некоторого zip или чего-то еще, но я бы скорее упростил весь подход с помощью скрипта-обертки, который гарантирует, что выполнение происходит в правильном контексте, с правильным экземпляром python.
Оболочка может содержать всего лишь:
import sys
__import__(sys.argv[1])
Затем вы можете использовать свой любимый метод, чтобы получить имя модуля для использования.
вернуться к первоначальному требованию. Если я правильно понял, идея заключается в том, что кто-то запускает файл python в некотором подкаталоге, чтобы узнать из сообщения об использовании, что это действительно модуль some.mega.package.
Я думаю, что нет надежного, общего способа определить, хочет ли кто-нибудь запустить модуль c, bc или abc, без некоторого анализа файловой системы с определенной эвристикой (скажем, поиск всех __init__.py во внешних каталогах до точек больше нет __init__.py), и даже при анализе не 100%.
Количество опций для получения пути / имени текущего модуля.
Сначала ознакомьтесь с использованием __ file __ в Python, Нажмите здесь, чтобы увидеть использование .
Содержит название загруженного в данный момент модуля .
Проверьте / попробуйте следующий код, он будет работать на обоих Python2 и amp; python3 .
# module_names.py
import os
print (__file__)
print (os.path.abspath(__file__))
print (os.path.realpath(__file__))
Вывод в MAC OS X:
MacBook-Pro-2:practice admin$ python module_names.py
module_names.py
/Users/admin/projects/Python/python-the-snake/practice/module_names.py
/Users/admin/projects/Python/python-the-snake/practice/module_names.py
Итак, здесь мы получили имя текущего имени модуля и его абсолютный путь .
вам следует жестко закодировать a.b.c
в вашей помощи, если вы распространяете пакет как таковой, то это способ вызывать его независимо от того, где a
находится в файловой системе, если он находится на PYTHONPATH, он будет импортированы.