这个错误意味着什么?
Ran 1 test in 0.002s
FAILED (failures=1)
ankit@ubuntu:~/Desktop$ python binary_light.py
Light switched None
F
======================================================================
FAIL: testOne (__main__.IsOddTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "binary_light.py", line 54, in testOne
self.failUnless(b1.SetTarget(NewTargetValue = 'something'))
AssertionError
守则是:
from brisa.core.reactors import install_default_reactor
reactor = install_default_reactor()
import os
import unittest
from brisa.upnp.device import Device, Service
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 = 'something'))
if __name__ == '__main__':
unittest.main()
if __name__ == '__main__':
device = BinaryLight()
device += BinaryLight()
device.start()
reactor.add_after_stop_func(device.stop)
reactor.main()
错误:
ankit@ubuntu:~/Desktop$ python binary_light.py
E
======================================================================
ERROR: testOne (__main__.IsOddTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "binary_light.py", line 54, in testOne
self.failUnless(b1.SetTarget()=={})
File "binary_light.py", line 25, in SetTarget
self.target = kwargs['NewTargetValue']
KeyError: 'NewTargetValue'
----------------------------------------------------------------------
Ran 1 test in 0.002s
FAILED (errors=1)
答案 0 :(得分:1)
http://docs.python.org/library/exceptions.html#exceptions.AssertionError下记录了AssertionError
:
assert
语句失败时引发。
您的unittest断言SetTarget
将返回布尔值为True
的内容;但是,您的方法返回{}
,这相当于布尔False
,导致AssertionError
。要解决此问题,请测试SetTarget
是否返回{}
或更改它以返回将被解释为True的内容。
如果您想知道为什么设备代码不起作用,那是因为您在启动设备之前运行了单元测试 - 如果单元测试失败,您的脚本将停在那里。