Python单元测试微妙的错误

时间:2016-09-21 18:37:36

标签: python unit-testing

我是Python的新手,我已经阅读了python的单元测试文档,我正在做一些与提供的示例不同的东西。我正在比较集。我不知道为什么我的代码会一直失败。好像代码写得正确。有人可以采取一个雄鹅,看看他们是否可以解决问题?我将永远是伟大的!

我正在努力改进单元测试,这就是为什么我正在使用这个代码。

import unittest

def determineIntersections(listingData, carList):
    listingDataKeys = []
    for key in listingData: 
        listingDataKeys.append(key)

    carListKeys = []
    for car in carList:
        carListKeys.append(car[0])

    intersection = set(carListKeys).intersection(set(listingDataKeys))
    difference = set(carListKeys).symmetric_difference(set(listingDataKeys))

    resultList = {'intersection' : intersection, 
                  'difference'   : difference}
    return resultList

class TestHarness(unittest.TestCase):
    def test_determineIntersections(self):
        listingData = {"a": "", "b": "", "c": "", "d": ""}
        carList = {"a": "", "e": "", "f": ""}
        results = determineIntersections(listingData, carList)
        print results['intersection']
        print results['difference']

        self.assertEqual(len(results['intersection']), 1)
        self.assertSetEqual(results['intersection'], set(["a"]) # offending code piece
        self.assertEqual(results['difference'], set(["b", "c", "d", "e", "f"])) # offending code piece

if __name__ == '__main__':
    unittest.main()

当我禁用作为集合比较的断言的“违规代码段”时,代码行为正常但是当我启用代码时,我得到以下输出:

python UnitTester.py
  File "UnitTester.py", line 39
    if __name__ == '__main__':
                             ^
SyntaxError: invalid syntax

任何想法都非常感谢!谢谢。

1 个答案:

答案 0 :(得分:2)

您只是在

末尾错过了一个括号
self.assertSetEqual(results['intersection'], set(["a"])

这使翻译感到困惑。将其更改为

self.assertSetEqual(results['intersection'], set(["a"]))

通常,您可能会尝试查找与括号匹配的编辑器(或编辑器设置),或者警告无法匹配的括号。