Possible Duplicate:
ValueError: no such test method in <class 'myapp.tests.SessionTestCase'>: runTest




import unittest

class BzTestSe(unittest.TestCase):
    DEFAULTUSERNAME = 'username-a2'
    DEFAULTPASSWORD = 'pass'
    DEFAULTHOST = 'localhots'

    def __init__(self,username=DEFAULTUSERNAME, password=DEFAULTPASSWORD, host=DEFAULTHOST):
        super(unittest.TestCase,self).__init__()
        self.username=username
        self.password=password
        self.host=host

class test_se_topwebsite(BztTestSe):
    def setUp(self):
        print "setup"

    def test_test_se_topwebsite(self):
        self.fail()


当我从另一个文件调用上述类时,出现以下错误。请让我知道我错了。

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "testsuite/test_se.py", line 10, in __init__
    super(unittest.Testcase,self).__init__()
File "/usr/lib/python2.7/unittest/case.py", line 184, in __init__
    (self.__class__, methodName))
ValueError: no such test method in <class 'testsuite.test_se.BztTestSe'>: runTest

最佳答案

让我们尝试回到简单的地方。在使用unittest时,您有两种执行测试用例的方法,但是最简单的方法是在包含您的unittests的文件中具有main函数。

例如:

import unittest

class TestSomething(unittest.TestCase):

    def setUp(self):
        self.message = "does this work"

    def test_message_is_expected(self):
        self.assertEquals("does this work", self.message)


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


注意您的测试用例(类)子类unittest.TestCase,然后使用setUp方法为您的测试用例设置任何状态,最后您将需要一些前缀为test_ ...的方法,测试运行程序将执行这些方法。

如果将上面的文件保存到让我们说的test_something.py中,然后在运行python test_something.py的控制台中,您会看到测试输出到控制台的结果。

如果您可以使用此模式而不是您使用的继承层次结构将示例重新构建为更清晰的示例,则可以执行测试。

我意识到这不仅仅是评论,而是答案,但我还无法发表评论。

09-03 18:02