Python模拟,补丁os.environ返回无
我有一个简单的模块:Python模拟,补丁os.environ返回无,python,Python,我有一个简单的模块: # 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 impor
# 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您的函数返回None
,因为没有明确的返回语句。添加一个返回值
:
def file_path():
return join(environ['TARGET_DIRECTORY'], some_file_name)
模拟补丁在其他情况下运行良好。是否在某个包中安装了my_module
?@J0HN,如下所述,我刚刚从Scala切换回Python,不需要返回关键字。Doh!当然在Scala使用了几个月后,我刚刚切换回Python,这里不需要return语句。