ユニットテストのために書いている関数でグローバル変数の値を設定できません。Python 2.6 unittest - テスト中の関数のグローバル変数に使用する値を設定する方法
この機能は、テストで使用する準備ができていない可能性があります。または少なくとも簡単な方法でテストするために使用されるが、私はその問題を回避しようとしている。ここで
は、私がテストをしようとしている機能の例です。
def my_func_with_globals(filepath):
spos=filepath.find(__my_global_var1)
new_path = filepath[0:spos] + __my_global_var2
return new_path
def some_function():
...
my_func_with_globals(filepath)
...
if __name__ = '__main__':
global __my_global_var1
__my_global_var1='value1'
global __my_global_var2
__my_global_var2='value2'
...
some_function()
そしてここでは、私のテストの例です:
import unittest
from my_module import *
class UnitTestMyModule(unittest.TestCase):
def test_my_func_with_globals(self):
self.assertEqual(my_func_with_globals('arbitrary/file/path'), 'valid output')
@のkdopenの提案を使用して私のテストのもう一つの例(私に同じエラーになります):
import unittest
import my_module
class UnitTestMyModule(unittest.TestCase):
def test_my_func_with_globals(self):
my_module.__my_global_var1='some/value'
my_module.__my_global_var2='second_val'
self.assertEqual(my_module.my_func_with_globals('arbitrary/file/path'), 'valid output')
私はエラーを取得しておいてください。
NameError: global name '__my_global_var1' is not defined.
私はいくつかのことを試しましたが、何もできません。 unittest.mock.patchを使用すると完全に動作するように見えますが、私は現在v2.6.4で何をしているのでしょうか。
私は実際には「インポートmy_module」をやって、その後my_module .__ my_global_var1とmy_module .__ my_global_var2と私のテストに使用する値を設定しようとしました、と私はまだ同じエラー「NameError:グローバル名 『を取得__my_global_var1』がdefintedされていません' – user797963
私の元の投稿に例を追加しました... – user797963
それは何か他のことが起こっているようです...実際には 'my_module'で定義されているグローバルか何か他のものをインポートしていますか(またはおそらく' __init__ .py') – kdopen