2017-07-25 50 views
-1

我在編寫下面提到的ZabbixAPILayer類的測試用例時遇到困難。我不知道我該如何嘲笑那裏的'zabbix_conn_obj'。任何幫助將不勝感激。謝謝!如何在Python中模擬測試用例的對象

文件:externalapi/apilayer.py

from zabbix.api import ZabbixAPI 

import json 
import time 
class ZabbixAPILayer(object): 

    def uptime(self,arg,zabbix_conn_obj): 
     try: 
      getUpdateItem = zabbix_conn_obj.do_request("item.get", {"host":arg}) 

      lastclock=getUpdateItem['result'][37].get('lastclock') 
      lastclock=int(lastclock) 

      curclock=int(time.time()) 

      check_val=curclock-lastclock 
      limit=60*1000 
      if check_val<limit: 
       lastval=getUpdateItem['result'][37].get('lastvalue') 
       return time.strftime("%H:%M:%S", time.gmtime(float(getUpdateItem['result'][37].get('lastvalue')))) 

      else: 
       return "-" 

     except: 
      return "NOT AVAILABLE" 
    ..... 

class APILayer(ZabbixAPILayer): 
    def __init__(self): 
     self.zabbix_conn_obj=ZabbixAPI(url=settings.ZABBIX_URL, user=settings.ZABBIX_USER, password=settings.ZABBIX_PWD) 

    def uptime(self,arg): 
     return super(APILayer,self).uptime(arg,self.zabbix_conn_obj) 
..... 

文件:基地/ admin.py

...... 
from ..externalapis.apilayer import APILayer 
...... 
gen_obj= APILayer() 

gen_obj.uptime() 
...... 
+0

從'zabbix_conn_obj = Mock()'開始。 – Goyo

+0

模擬總是特定於測試,所以請提供您想要模擬的測試。 –

+0

太棒了。謝謝!理解並得到這個工作! – user3465593

回答

0

感謝您的意見。得到這個工作!這裏我這樣做的方式

import mock 

... 

def test_uptime(self): 
    zabbix_conn_obj = mock.Mock() 
    json_blob = {} # This is the json blob i'm using as return value from do request 
    zabbix_conn_obj.do_request = mock.Mock(return_value=json_blob) 
    obj = ZabbixAPILayer() 
    value = obj.uptime("TestHOST",zabbix_conn_obj) 
    desired_result = '' #whatever my desired value is 
    self.assertEqual(value, desired_result) 
相關問題