PyCharm 似乎 运行 所有单元测试

PyCharm doesn't appear to run all unit tests

我在 pycharm 中遇到 运行 单元测试问题。第一个 class 'KnownValues' 运行但另一个 class 根本没有被检查。

import roman
import unittest

class KnownValues(unittest.TestCase):

    def test_too_large(self):
        '''to_roman should fail with large input'''
        self.assertRaises(roman.OutOfRangeError, roman.to_roman, 4000)
    def test_too_small(self):
        ls = [0,-1,-25,-60]
        for x in ls:
            self.assertRaises(roman.OutOfRangeError, roman.to_roman, x)
    def test_non_int(self):
        ls = [1.5, -6.5, 6.8,12.9, "hello wold", "nigga123"]
        for x in ls:
             self.assertRaises(roman.TypeError, roman.to_roman, x)

class Test2(unittest.TestCase):
    def test1(self):
        assert 1 == 1


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

使用 test 启动所有测试函数。许多人使用下划线来分隔单词,因此很多人最终以 test_ 开头的测试结束,但 test 是所需要的。

当在 GUI 中遇到问题时,您可以从命令行检查运行测试的情况。

python test.py

python -m test

您可能 运行 遇到的一个问题是,您已经在 classes 中定义了测试,当通过 GUI 运行 连接它们时,GUI 会自动发现它们为你。请务必在测试文件末尾包含指示解释器使用 unittest.

中内置的 main 函数的行
if __name__ == '__main__':
    unittest.main()

请记住,您可以选择 运行 一次只在一个 class 中进行测试:

python tests.py KnownValues
python tests.py Test2

在PyCharm中,它应该会自动发现所有测试classes。您仍然可以选择一次只 运行 一个 class。选择 运行->Edit Configurations 查看您当前 运行 正在使用的选项。使用命令行参数,您可以控制 运行 更少或更多的测试。

如您所见,您可以选择 运行 脚本、class 或方法。请务必设置 运行 配置的名称,以反映您的范围 运行ning.