我更改了代码并尝试运行测试用例,但仍然可以获得更好的情况。请查看代码和错误,并指导我摆脱它。
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,
'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
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(Device):
def __init__(self):
Device.__init__(self,
'urn:schemas=upnp-org:device:BinaryLight:1',
'Binary Light Device')
# Here's our "unit tests".
class IsOddTests(unittest.TestCase):
def testOne(self):
b1 = SwitchPower()
self.failUnless(b1.SetTarget('NewTargetValue'))
if __name__ == '__main__':
unittest.main()
if __name__ == '__main__':
device = BinaryLight()
device += BinaryLight()
device.start()
reactor.add_after_stop_func(device.stop)
reactor.main()
错误:
ERROR: testOne (__main__.IsOddTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "binary_light.py", line 54, in testOne
self.failUnless(b1.SetTarget('NewTargetValue'))
File "binary_light.py", line 25, in SetTarget
self.target = kwargs['NewTargetValue']
KeyError: 'NewTargetValue'
答案 0 :(得分:3)
您没有将关键字列表传入SetTarget
。这样做:
self.failUnless(b1.SetTarget(NewTargetValue='something'))
错误:
Traceback (most recent call last):
File "binary_light.py", line 54, in testOne
self.failUnless(b1.SetTarget(NewTargetValue= 'something'))
AssertionError