2
我寫測試儀進入運行用戶腳本:導入文件由用戶
tester d:\scripts\test_scripts_list.txt
的test_scripts_list.txt看起來是這樣的:
test1
d:\123\test2
我的程序讀取與命令行模塊模塊,讀取test_scripts_list.txt
的每一行,並導入每個測試文件與__import__
(實際運行測試文件)。
這是行之有效的。
我唯一的問題是導入d:\ 123 \ TEST2這是給我:
ImportError: Import by filename is not supported.
我認爲這是可以通過分析路徑名來解決,把它添加到PYTHONPATH
與sys.path.append
和運行時比導入它。但它似乎是一個複雜的靈魂。
你有更好的主意嗎?
注:TEST1的路徑已經在PYTHONPATH
編輯 我目前的解決方案:
# Go over each line in scripts_filename and import all tests
for line in open(scripts_file.scripts_filename):
line = line.strip()
if not line or line[0] == '#':
# Ignore empty line and line with comment
continue
elif line[1] == ':' and line[2] == '\\':
# Find the last position of '\\'
file_name_pos = line.rfind('\\')
# Separate file path and filename (I.E [0:5] will take 4 first chars and [4:] will take all chars except the 4 chars)
file_path_string = line[0:file_name_pos+1]
file_name_string = line[file_name_pos+1:]
# Append file_path_string to PYTHONPATH in order to import it later
sys.path.append(file_path_string)
import_name = file_name_string
else:
import_name = line
try:
# Try to import test
print "Run test : %s" % line
__import__(import_name)
except ImportError:
print "Failed! (Test not found). Continue to the next test"
看來我還需要分析文件中的行,單獨的路徑和模塊的名稱,然後右鍵打電話給你function.am我? – 2011-12-21 09:27:25
現在我的靈魂是:file_name_pos = line.rfind('\\')file_path_string = line [0:file_name_pos + 1] file_name_string = line [file_name_pos + 1:] sys.path.append(file_path_string) – 2011-12-21 09:29:51
模塊名稱可以基本上任何東西。我已經更新了答案,以顯示計算它的一種方式。 – 2011-12-21 11:13:30