python - PyUnit : How to run all tests from different unittest. 文件中存在 TestCase 子类

标签 python python-unittest

import unittest

import HTMLTestRunner

class TestClass1(unittest.TestCase):

    def setUp(self):
        pass

    def case1(self):
        assert 4 == 3

    def case2(self):
        assert 4 == 4

    def tearDown(self):
        pass

class TestClass2(unittest.TestCase):

    def setUp(self):
        pass

    def case3(self):
        assert 1 == 2

    def tearDown(self):
        pass

def suite():

    suite = unittest.TestSuite()
    suite.addTest(TestClass1(['case1','case2']))
    suite.addTest(TestClass2('case4'))
    return suite


test_suite = suite()

unittest.TextTestRunner(verbosity=2).run(test_suite)

fp = file('my_report.html', 'wb')

runner = HTMLTestRunner.HTMLTestRunner(
                stream=fp,
                title='My unit test',
                description='This demonstrates the report output by HTMLTestRunner.'
                )

runner.run(test_suite)

我试图在一次运行中运行两个类中的所有方法。然而,上面的代码并没有这样做。在套件功能中,我尝试从类中添加多个测试,但这也不起作用并且给出了错误。

最佳答案

来自this answer在问题“Is test suite deprecated in PyUnit?”:

“如果您想在单个模块中运行所有测试,则不需要unittest.TestSuite,因为unittest.main()将动态检查调用它的模块并查找从unittest.TestCase派生的所有类。”

该答案中有更多关于何时 unittest.TestSuite 的内容。很有用。

也就是说,我需要进行一些更改才能使这些测试正常工作。首先unittest查找以“test_”开头的函数。另外,单元测试的assertEqual and similar methods应该使用,而不仅仅是 Python's assert statement 。这样做并消除了一些不需要的代码导致:

import unittest
class TestClass1(unittest.TestCase):
    def test_case1(self):
        self.assertEqual(4, 3)
    def test_case2(self):
        self.assertEqual(4, 4)
class TestClass2(unittest.TestCase):
    def test_case3(self):
        self.assertEqual(1, 2)
unittest.main()

这产生了适当的输出(3 个测试运行,2 个失败),出于篇幅的考虑,我不会在此处重现该输出。

关于python - PyUnit : How to run all tests from different unittest. 文件中存在 TestCase 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12430385/

相关文章:

python - 使 tkinter 窗口全屏

python - 找不到 testing.postgresql 命令 : initdb inside docker

python - 如何卡住 datetime.now 以进行单元测试

python - 如何使用 CliRunner 测试脚本?

python 3.4 unittest 失败,尽管 expectedFailure 类

python - django - 如何用 kwargs 做到这一点

列表中的python项目添加到字符串

python - Tkinter - 网格元素彼此相邻

python - mlab 中的简单箭头 mayavi/tvtk 奇怪的行为(看起来像一个错误)

PyCharm 单元测试 : "Failed to import test module" caused by "loadTestsFromName" in a symlink environment