当前位置: 首页 > 面试题库 >

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

凌华奥
2023-03-14
问题内容

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

from somefakepackage.morefakestuff import somethingfake

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

谢谢!


问题答案:

当然。定义一个类,将所需的内容放入其中,将该类分配给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


 类似资料:
  • 是否有一种明智的方法让一个perl6模块检查另一个perl6模块的存在,并在安装时“使用”它? 像这样的。。。 其思想是传播操作符重载(中缀: (请不要拆掉排水管,因为我怀疑总有办法!)

  • 问题内容: 是否可以在另一个CSS文件中包含一个CSS文件? 问题答案: 是: 注意: 该规则必须先于所有其他规则(除外)。 其他语句需要其他服务器请求。或者,将所有CSS连接到一个文件中,以避免多个HTTP请求。例如,复制的内容和入和仅供参考。

  • 本文向大家介绍是否可以从区块链的网络中删除一个或多个块?相关面试题,主要包含被问及是否可以从区块链的网络中删除一个或多个块?时的应答技巧和注意事项,需要的朋友参考一下 对的,这是可能的。有时,只需要考虑此在线分类账的特定部分。通过使用默认过滤器和选项,我们可以删除这些块。

  • 我正在做一个小的应用程序,可以列出所有的功能和帮助文档从给定的模块名和函数名。只需练习我的技能。 在我创建和entrybox之后,从user获取作为模块名的输入,并通过以下代码导入: 然后,我尝试使用列出所有函数名。但是我发现函数必须在导入后直接应用到模块名,例如:或。当模块名是一个变量时,是否有任何工作方法来列出所有的函数?

  • 我使用antlr v4编写了一个t-sql解析器。此警告是否有问题? “规则‘sqlCommit’包含一个可选块,其中至少有一个可选块可以匹配空字符串” 我的代码: 在之前的版本中,我在sqlCommit中直接使用lexer规则ID而不是解析器规则ID。但将ID更改为ID后,会出现警告。 (如果您混淆了ID和ID,则提示:我想使用解析器规则ID而不是ID,因为标识符可以是可能已经被其他lexer规

  • 问题内容: 在Java中,我们可以在一个类中创建多少个构造函数。 问题答案: 严格来说,JVM类文件格式将一个类的方法(包括所有构造函数)限制为少于65536。而且,根据汤姆·哈顿(Tom Hawtin)的说法,有效限制为65527。每个方法签名在常量池中占用一个插槽。由于65535池条目中的某些条目(不可避免地)被其他事物消耗,因此格式良好的类文件不可能使用所有可能的方法/构造函数ID。 参考-