我是否可以在python中“伪造”一个软件包(或至少一个模块)以进行测试?

发布于 2021-01-29 18:25:12

我想用python伪造一个包。我想定义一些东西,以便代码可以做

from somefakepackage.morefakestuff import somethingfake

somefakepackage是在代码中定义的,它下面的所有内容也是如此。那可能吗?这样做的原因是为了欺骗我的单元测试,因为我在python路径中得到了一个包(或者正如我在标题中所说的,是一个模块),而这实际上只是对此单元测试的模仿。

谢谢!

关注者
0
被浏览
95
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    当然。定义一个类,将所需的内容放入其中,将该类分配给sys.modules["classname"]

    class fakemodule(object):
    
        @staticmethod
        def method(a, b):
            return a+b
    
    import sys
    sys.modules["package.module"] = fakemodule
    

    您还可以使用一个单独的模块(称为fakemodule.py):

    import fakemodule, sys
    
    sys.modules["package.module"] = fakemodule
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看