这个错误是什么意思?

时间:2011-02-11 23:33:57

标签: python

这个错误意味着什么?

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)

1 个答案:

答案 0 :(得分:1)

http://docs.python.org/library/exceptions.html#exceptions.AssertionError下记录了AssertionError

  

assert语句失败时引发。

您的unittest断言SetTarget将返回布尔值为True的内容;但是,您的方法返回{},这相当于布尔False,导致AssertionError。要解决此问题,请测试SetTarget是否返回{}或更改它以返回将被解释为True的内容。

如果您想知道为什么设备代码不起作用,那是因为您在启动设备之前运行了单元测试 - 如果单元测试失败,您的脚本将停在那里。