Python mock,patch os.environ 返回 None
我有一个简单的模块:
# my_module
from os.path import join
from os import environ
some_file_name = 'foo.txt'
def file_path():
join(environ['TARGET_DIRECTORY'], some_file_name)
还有一个简单的测试:
import os
import unittest
from os.path import join
from mock import patch
from my_module import some_file_name, file_path
class MyTest(unittest.TestCase):
def test_can_create_path(self):
some_folder = '/path/to/directory'
with patch.dict('my_module.environ', {'TARGET_DIRECTORY': some_folder}):
self.assertEqual(file_path(), join(some_folder, some_file_name))
if __name__ == '__main__':
unittest.main()
我本来以为调用 environ['TARGET_DIRECTORY']
会返回 '/path/to/directory'
,结果却返回了 None
。
1 个回答
3
你的函数返回的是None
,因为里面没有明确的return
语句。你需要加一个return
:
def file_path():
return join(environ['TARGET_DIRECTORY'], some_file_name)
其他方面,模拟补丁工作得很好。