Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python单元测试中重写(而不是修补)单个方法_Python_Unit Testing_Overriding - Fatal编程技术网

如何在python单元测试中重写(而不是修补)单个方法

如何在python单元测试中重写(而不是修补)单个方法,python,unit-testing,overriding,Python,Unit Testing,Overriding,我找了好几个小时了。找不到任何人想这么做。嗯 我相信我必须重写类实例中的单个方法。我不是说返回值=。我需要让讨论中的方法做一些涉及自我的事情 我会尽力把它分解。自由地解释并包括我尝试过的许多事情中的一件,但都不起作用 类设置类对象: def set_一些物料自身: 数据列表=函数不能在测试平台上运行 self.something=数据列表[0] self.something\u else=数据列表[1] 类对象: self.config=SetupClass assert self.config

我找了好几个小时了。找不到任何人想这么做。嗯

我相信我必须重写类实例中的单个方法。我不是说返回值=。我需要让讨论中的方法做一些涉及自我的事情

我会尽力把它分解。自由地解释并包括我尝试过的许多事情中的一件,但都不起作用

类设置类对象: def set_一些物料自身: 数据列表=函数不能在测试平台上运行 self.something=数据列表[0] self.something\u else=数据列表[1] 类对象: self.config=SetupClass assert self.config.something==“foo” 类UnitTestsTestCase: @补丁“设置类” def测试自身,模拟1: def WedgeClassSetupClass: def set_一些物料自身: self.something='foo' 我是Python新手,太深了 楔块类=楔块类 mock1.return\u value=wedge\u类不工作。上下文错误
uut=uut除了示例代码中的多个错误之外,我在咖啡馆里从头写起

问题主要是我使用return_值而不是side_效应来用我自己的子类“替换”修补过的类

我的需要,也许现在更清楚地重申了,是重写一个方法,在被测试单元UUT中的一个类中设置一些东西,但不模拟该类

该方法发出了几个“self.foo=bar”语句,我想出于测试目的更改这些语句。因此,模拟方法未使用的返回值是不够的。。。并且patch.object似乎丢失了类上下文,“self”未知等等

最后,这里是工作代码,做我需要的

导入单元测试 导入模拟 类设置类对象: def set_一些物料自身: 数据列表=[“数据不可用”,“在测试平台上”]崩溃! self.something=数据列表[0] self.something\u else=数据列表[1] 类受测试单元: 定义初始自我: self.config=SetupClass self.config.set_一些东西
assert self.config.something==“foo”类必须使用类UUT而不是def UUT启动,并且标识为off@Gang ... 哦,是的。只是打字错误。我已经编辑了十几次伪代码。很抱歉当前版本更接近我实际尝试的版本。def WedgeClass应该在类UnitTests之外吗?在一个函数uu init_uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。。。是的,语法仍然明显错误,至少,该死。我现在回到了一台真正的计算机上,所以我将测试实际的代码并将其整理出来。谢谢你的提醒。