Pythonでは、 ハイフン(-) がファイル名に入ったスクリプトはimportステートメントではできません。
ですがテストを書くためにどうしてもハイフンが入ったファイル名をimportしたい場合、どうすればいいのか、調べて分かったのでメモ。
__import__
__import__ は、ファイルのパス名を引数にとり、ファイルのモジュールを返します。
load-path.py
import sys
path = sys.path
>>> module = __import__("load-path")
>>> type(module)
<type 'module'>
>>> dir(module)
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'sys', 'path']
>>> dir.path
これでハイフンがついたファイルでも、簡単にimportできます。
テストクラス内で使う
unit.test.py
import unittest
class Tester(unittest.TestCase):
module = __import__("load-path")
def setUp(self):
for key in dir(self.module):
setattr(self, key, getattr(self.module,key))