Error while running test case
I need to test my code below. I am using one test to see if it is working or not. but dont know what exactly I should pass as a parameter in the test code. Please see the test code at the end and please guide me what value I should pass here? Because whatever I write here, it throws me an error.
from brisa.core.reactors import install_default_reactor
reactor = install_default_reactor()
import os
import unittest
from brisa.upnp.device import Device, Service
from brisa.upnp.device.service import StateVariable
class SwitchPower(Service):
def __init__(self):
Service.__init__(self,
开发者_C百科 'SwitchPower',
'urn:schemas-upnp-org:service:SwitchPower:1',
'',
os.getcwd() + '/SwitchPower-scpd.xml')
self.target = False
self.status = False
def SetTarget(self, *args, **kwargs):
self.target = kwargs['NewTargetValue']
self.status = self.target
self.set_state_variable('Status', self.target)
print 'Light switched ', {'1': 'on', '0': 'off'}.get(self.target, None)
return {}
def GetTarget(self, *args, **kwargs):
return {'RetTargetValue': self.target}
def soap_GetStatus(self, *args, **kwargs):
return {'ResultStatus': self.status}
class BinaryLight(object):
def __init__(self):
self.server_name = 'Binary Light device'
self.device = None
def _create_device(self):
project_page = 'https://garage.maemo.org/projects/brisa'
self.device = Device('urn:schemas=upnp-org:device:BinaryLight:1',
self.server_name,
manufacturer = 'Ankit',
model_name = 'Binary Light Device',
model_description = 'Test Device',
model_number = '1.0',
model_url=project_page)
def _add_service(self):
switch = SwitchPower()
self.device.add_service(switch)
def start(self):
self._create_device()
self._add_services()
self.device.start()
reactor.add_after_stop_func(self.device.stop)
reactor.main()
# Here's our "unit tests".
class IsOddTests(unittest.TestCase):
def testOne(self):
self.failUnless(_create_device('urn:schemas=upnp-org:device:BinaryLight:1'))
if __name__ == '__main__':
unittest.main()
if __name__ == '__main__':
device = BinaryLight()
device.start()
Ran 1 test in 0.000s
The Error is:-
ERROR: testOne (__main__.IsOddTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "binary_light.py", line 67, in testOne
self.failUnless(_create_device('urn:schemas=upnp-org:device:BinaryLight:1'))
NameError: global name '_create_device' is not defined
----------------------------------------------------------------------
In your testOne()
method, you're calling _create_device()
, which isn't a global function it's a method on SwitchPower objects.
You probably want to create a new SwitchPower object.
_create_device()
is not defined in class IsOddTests
. It is defined in BinaryLight
.
I'm not completely sure about this, but what about changing:
self.failUnless(_create_device('urn:schemas=upnp-org:device:BinaryLight:1'))
to:
bl = BinaryLight()
self.failUnless(bl._create_device())
I removed:
'urn:schemas=upnp-org:device:BinaryLight:1'
because it was in the definition of _create_device()
.
精彩评论