我使用python的“mock”模块来模拟django项目中的类和函数。 我的项目结构是:
Project name --> 'hello'
App1 ----> hello
App2 ----> hello_world
App3 ----> bye
“hello”只包含测试.py和设置.py'hello_world'包含视图文件'问候语.py'是这样的:
^{pr2}$“再见”包含“视图.py,其中包含:
from django.shortcuts import render
from django.http import HttpRequest
# Create your views here.
def saybye():
print "goodbye world"
return
class goodbye:
def __init__(self):
print "goodbye's init called"
return
def saygoodbye(self):
return "goodbye.saygoodbye called"
现在,我的测试.py'是:
from unittest import TestCase
import mock
from mock import patch
from hello_world import greetings
import bye
from django.test.client import RequestFactory
class TestBasic(TestCase):
def setUp(self):
self.var = 'abc'
self.factory = RequestFactory()
@patch('bye.views.goodbye')
def test_greeting(self,mocksaybye):
assert mocksaybye is bye.views.goodbye
mocksaybye.saygoodbye = mock.MagicMock(return_value="mocked goodbye called")
bye.views.goodbye()
print mocksaybye.saygoodbye()
assert mocksaybye.called
assert mocksaybye.saygoodbye.called
req = self.factory.get('/sayhello/')
greetings.greet(req)
我得到以下关于运行python的输出管理.py测试':
mocked goodbye called
goodbye world
<MagicMock name='goodbye().saygoodbye()' id='60566864'>
greet called
我期望输出的第三行是:"mocked goodbye called"
据我所知,mocksaybey类将模拟goodbye类的saygoody函数,并返回名为的自定义输出mockbeyond。在
然而,这种情况不会发生。为什么会这样?另外,我应该怎么做才能得到这个期望的输出呢?在
您需要使用^{} 方法,而不是^{} 。还有^{} 而不是{a4}
因此,代替这段代码:
使用此项(尚未测试):
^{pr2}$相关问题 更多 >
编程相关推荐