缺少必要的位置参数 - nosetests

时间:2015-10-16 03:08:19

标签: nose nosetests

我只是想在下面执行一个简单的测试用例列表,

cin

然后用这个命令测试它:" nosetests3 -s testinheritence.py"但我坚持不懈地遇到这些例外,它抱怨道,

# testinheritence.py

import unittest

class heleClass(object):
    def execute_test_plan(self, test_plan):
        self.assertEqual("a", "a")


class TestParent(heleClass):
    def testName(self):
        test_plan = {"a": 1}
        self.execute_test_plan(test_plan)


class SqlInheritance(unittest.TestCase, TestParent):
    print ("get into inheritance")


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

使用" python -m unittest testinheritence"运行它,测试用例将成功通过,我用谷歌搜索了但是还没有找到解决方法,我在这里错过了什么?任何回应都非常高兴!

2 个答案:

答案 0 :(得分:2)

这里有几个问题。您的heleClass不是正确的单元测试类(您使用object作为您的父级。因此它没有self.assertEqual()方法。此外,鼻子认为“execute_test_plan”是一个测试,并且调用它作为测试的一部分,但它失败了,因为它需要一个参数。尝试将execute_test_plan标记为@nottest

import unittest
from nose.tools import nottest

class heleClass(unittest.TestCase):
    @nottest
    def execute_test_plan(self, test_plan):
        self.assertEqual("a", "a")


class TestParent(heleClass):
    def testName(self):
        test_plan = {"a": 1}
        self.execute_test_plan(test_plan)        

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

答案 1 :(得分:0)

nose也将抱怨,如果您将测试助手方法移至测试模块中的顶级功能。

我可以通过在测试模块中将函数设为私有,更改名称以_开头来解决此问题。然后nose将忽略它。