在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库)。
感谢任何帮助。
答案 0 :(得分:1)
如果您的方法没有参数,那么如何将无效的URI传递给它?您应该通过传入预期会导致您要测试的行为的URI来测试您的方法。这样做不需要使用mock
。
需要模拟的东西,如果这是一个单元测试,在这种情况下你可能想要模拟在网络上发出请求的整个代码块,(比方说,urllib2.urlopen
)只是不做任何网络活动,而是回吐你要测试的任何内容或HTTP错误。
作为旁注,以一种使其更易测试的方式构建您的实际生产代码是完全合理的(也是可取的)。