在单元测试中分配模拟变量值

时间:2012-08-12 01:20:35

标签: python unit-testing mocking python-unittest

在Python中,我创建了一个方法,用于读取网页的内容并对内容进行一些处理。

我想使用特定的http地址对方法进行单元测试,但我不想在生产代码中手动分配地址,然后对其进行测试。理想情况下,我想创建某种模拟对象(使用Mock库),它获取我需要的http地址的值,这样我就可以用该值运行我的测试。

作为旁注,测试的目的是验证我的代码使用测试的http地址引发了正确的异常。

因此,为了说明,我要测试的代码具有以下形式:

Class A

    method1()

        var1 = "wwww.something.com"
        read contents at address var1
        do stuff with contents (raise error if bad contents)

我想在单元测试中使用var1 =“wwww.somethingelse.com”测试代码(理想情况下使用Mock库)。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

如果您的方法没有参数,那么如何将无效的URI传递给它?您应该通过传入预期会导致您要测试的行为的URI来测试您的方法。这样做不需要使用mock

需要模拟的东西,如果这是一个单元测试,在这种情况下你可能想要模拟在网络上发出请求的整个代码块,(比方说,urllib2.urlopen)只是不做任何网络活动,而是回吐你要测试的任何内容或HTTP错误。

作为旁注,以一种使其更易测试的方式构建您的实际生产代码是完全合理的(也是可取的)。