我有这个函数应该接收列表 [x,y]
def input_origem():
origem = raw_input("Entre com o valor de x: ")
origem = eval(origem)
return origem
def input_saida():
destino = raw_input("Entre com o valor de y ")
destino = eval(destino)
return destino
def my func(origem, destino):
..
...
code
..
...
print myfunc(input_origem(), input_saida())
这段代码运行良好,但我不知道如何模拟这个函数。
我尝试了这样的方法:
class TEste(base.TestCase):
@base.TestCase.mock.patch('mypath.input_origem')
@base.TestCase.mock.patch('mypath.input_saida')
def test_movimento_cavalo(self, origem_mock, saida_mock):
origem_mock = self.mock.MagicMock()
saida_mock = self.mock.MagickMock()
myfunc(origem_mock, saida_mock)
myfunc.should.be.equal([1,1])
但测试永远不会完成。当我取消时,我得到:
origem = raw_input("输入 x 的值:")
键盘中断
你应该能够嘲笑__builtin__.raw_input
使用您通常用来模拟事物的任何设施。
一个非常简单的例子使用unittest
and mock
看起来像这样:
import unittest
import mock
import __builtin__
def test_raw_input():
return raw_input()
class Test(unittest.TestCase):
@mock.patch.object(__builtin__, 'raw_input')
def test_stuff(self, mock_raw_input):
mock_raw_input.return_value = 7
self.assertEqual(test_raw_input(), 7)
unittest.main()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)