开发者社区> 问答> 正文

通过文件名加载python脚本源进行测试

我想为名为foo-bar的python 3.7+ * script *创建一个测试(这是文件名,并且没有.py扩展名):

#!/usr/bin/env python

def foo(bar):
  return bar + 42

if __name__ == '__main__':
    print(foo(1))

如何单独通过路径加载该文件,以便可以测试foo()方法?该测试不应触发“如果为主要”条件。

  • UPDATE *注意,这不是要从测试中执行文件(即exec('foo-bar')),而是将其作为模块/资源加载/导入,从而允许测试代码执行 foo()`。

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 12:37:23 451 0
1 条回答
写回答
取消 提交回答
  • 您可以使用importlib中的函数直接从脚本文件加载该模块,而无需扩展名.py。

    要使此工作有效,您需要显式使用加载程序,在这种情况下,SourceFileLoader可以正常工作。

    from importlib.machinery import SourceFileLoader
    
    foo_bar = SourceFileLoader('foo_bar', './foo-bar').load_module()
    

    此时,您可以使用模块内部的功能:

    result = foo_bar.foo(1)
    assert result == 43
    

    回答来源:stackoverflow

    2020-03-24 12:37:30
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载