python在单元测试期间避免导入

问题描述

背景

我最近开始研究一个包含很多代码的旧项目。而且没有任何测试。 因此,我认为写一些测试是一个好习惯。但是我遇到的问题是,所有脚本都从我对单元测试不感兴趣的其他代码中导入了大量信息。

项目结构如下:

ProjectFolder
 -SourceCodeFolder
   __init__.py
   -code1.py
   -code2.py
 -TestFolder
   __init__.py
   -test.py

代码完全是功能和面向对象的代码。这是代码外观的示例。

code2.py

from code1 import thing_a,thing_b
execute_important_stuff()
A_CONSTANT_VALUE = 10
with open():
    do_stuff

def testable_function():
    call a function with A_CONSTANT_VALUE

class ThisIsAClass:
    class_stuff

所以说我想在单元测试中测试testable_function。但是我的问题是,当我导入要测试的功能时,会执行大量的代码。我相信我的嘲笑和修补技术在这项艰巨的任务中无法与之媲美。

问题

说我想测试一个超级简单的东西。 A_CONSTANT_VALUE的值== 10吗? 这就是我的追求:

import unittest
from code2 import A_CONSTANT_VALUE as cv

class TestBasic(unittest.TestCase):
    def test_value(self):
        self.assertEqual(cv,10)

if __name__ == '__main__':
    unittest.main()

问题是我无法对此进行测试,因为大量的导入和函数调用会破坏代码。我知道这是python代码的工作方式。但是,我如何只隔离和测试一个函数,而忽略诸如导入和打开文件操作之类的代码

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)