Как получить текущий путь / имя запущенного модуля

Существует много платформ модульного теста 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

30
задан Danosaure 26 August 2013 в 20:20
поделиться

5 ответов

Я думаю, что вы на самом деле ищете специальную переменную __name__. Из документации Python :

В модуле имя модуля (в виде строки) доступно в качестве значения глобальной переменной __name__.

Если вы запустите файл напрямую, это имя будет __main__. Однако, если вы находитесь в модуле (как в случае, когда вы используете флаг -m или любой другой импорт), это будет полное имя модуля.

11
ответ дан 28 November 2019 в 00:07
поделиться

Единственный способ - это манипулирование путями с помощью os.getcwd (), os.path, file и еще много чего, как вы упомянули.

На самом деле это может быть хороший патч для реализации optparse / argparse (который в настоящее время заменяет «% prog» в строке использования на os.path.basename (sys.argv [0]) - вы используя optparse, верно? -), то есть другую специальную строку, например% module.

1
ответ дан 28 November 2019 в 00:07
поделиться

Не могу понять, почему существует такое ограничение, как «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%.

0
ответ дан 28 November 2019 в 00:07
поделиться

Количество опций для получения пути / имени текущего модуля.

Сначала ознакомьтесь с использованием __ 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

Итак, здесь мы получили имя текущего имени модуля и его абсолютный путь .

1
ответ дан 28 November 2019 в 00:07
поделиться

вам следует жестко закодировать a.b.c в вашей помощи, если вы распространяете пакет как таковой, то это способ вызывать его независимо от того, где a находится в файловой системе, если он находится на PYTHONPATH, он будет импортированы.

-2
ответ дан 28 November 2019 в 00:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: