python模拟:配置模拟对象的规范

时间:2019-07-10 09:58:02

标签: python unit-testing mocking

我有一个实例方法,可以初始化另一个类的对象。例如,

<xsl:param name="mask"   select="'Your request cannot be processed'"/>
          <xsl:variable name="lessThan" select="'&#x3C;'"/>
          <xsl:variable name="GreaterThan" select="'&#x3E;'"/>

         <xsl:template match="*" mode="copyFault">
            <xsl:value-of  disable-output-escaping = "yes" select="$lessThan"/>
            <xsl:text>data contentType="text/xml;charset=utf-8" contentLength="80"</xsl:text>
            <xsl:value-of disable-output-escaping = "yes" select="$GreaterThan"/>
            <xsl:value-of  disable-output-escaping = "yes" select="$lessThan"/>
            <xsl:text>![CDATA[</xsl:text>
            <xsl:value-of select="$mask" />
            <xsl:text>]]</xsl:text>
            <xsl:value-of disable-output-escaping = "yes" select="$GreaterThan"/>
            <xsl:value-of  disable-output-escaping = "yes" select="$lessThan"/>
            <xsl:text>/data</xsl:text>
            <xsl:value-of disable-output-escaping = "yes" select="$GreaterThan"/>            
          </xsl:template>

我正在测试用例中修补一个类

import module_two
class One:
    def start(self):
        self.two = module_two.Two()

如前所述,@patch('module_one.One', autospec=True) def test_one(patched_one): two = patched_one.return_value # Following method should raise error, but doesn't two.any_random_non_existing_method() 不会引发任何错误,因为two.any_random_non_existing_method()模拟对象未分配任何规格。

如何为two对象分配规范?我正在寻找类似以下片段的内容。

two

1 个答案:

答案 0 :(得分:1)

评论后,mock_add_spec可能会为您服务:

  

向模拟添加规格。 spec可以是一个对象或字符串列表。只能从规范中获取规范中的属性作为属性。

https://docs.python.org/3/library/unittest.mock.html#unittest.mock.Mock.mock_add_spec

这是它的外观:

# Add specifications on existing mock object
two.mock_add_spec(module_two.Two)
two.any_random_non_existing_method() # Error.!