source()导致将指定文件中的“符号”(函数、变量)加载到 test.py 文件的命名空间/范围内。这意味着 source() 是解决此问题的错误工具。
(使用 Orip 显示的技巧,在第一个 source() 之后将函数分配给另一个符号/名称,我建议不要这样做,因为其他依赖于所需函数以初始名称可用的代码最终会调用错误的函数。 )
使用 Python 的 import 语句,您可以通过将文件视为 Python 模块来实现函数位于单独的命名空间中。为此,您必须将包含所需文件的目录路径包含到 Python 自己的“搜索路径” - sys.path中:
suite_mine/tst_testcase1/test.py 的内容:
# -*- coding: utf-8 -*-
import os.path
import sys
# Add path to our modules to the Python search path at runtime:
sys.path.append(os.path.dirname(findFile("scripts", "file1.py")))
sys.path.append(os.path.dirname(findFile("scripts", "file2.py")))
# Now import our modules:
import file1
import file2
def main():
# Access functions in our modules:
file1.do_it()
file2.do_it()
suite_mine/tst_testcase1/file1.py 的内容:
# -*- coding: utf-8 -*-
import test
def do_it():
test.log("file1.py")
suite_mine/tst_testcase1/file2.py 的内容:
# -*- coding: utf-8 -*-
import test
def do_it():
test.log("file2.py")
结果日志条目:
file1.py
file2.py