Python中的单元测试

1 投票
1 回答
1920 浏览
提问于 2025-04-16 20:02

可能重复的问题:
ValueError: 在 <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

1 个回答

2

让我们回到一些简单的东西。在使用unittest这个工具时,有几种方法可以执行你的测试用例,但最简单的方法是在包含你测试用例的文件里写一个主函数。

比如说:

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,你就能看到测试结果输出到控制台上。

如果你能把你的例子用这种模式重新整理得更清晰,而不是用你之前的继承结构,你可能就能成功执行你的测试了。

我知道这更像是一个评论而不是答案,但我还不能发表评论。

撰写回答