Python unittest不运行测试

问题描述 投票:3回答:4

我做了一个名为demo的小项目,里面只有一个测试

import unittest


class Test(unittest.TestCase):


    def testName1(self):
        self.assertEqual(5+9, 14)


if __name__ == "__main__":
    #import sys;sys.argv = ['', 'Test.testName']
    unittest.main()

但是,从命令行

ThinkPad-T520:~/workspacep/demo$ python -m unittest

----------------------------------------------------------------------
Ran 0 tests in 0.000s

OK

为什么这不起作用?一般来说,如何使用单行从命令行运行所有单元测试?

目录的结构是

demo
    tests
          demo_test1.py  __init__.py
python unit-testing python-unittest
4个回答
4
投票

我刚才和同样的问题一起战斗,我通过使用测试发现命令解决了它。

python -m unittest discover -s .

您也可以传递您的测试文件模式以及其他选项https://docs.python.org/2/library/unittest.html#test-discovery


1
投票

你需要传递list of modules

例如,如果您的测试文件是foo.py,那么您可以运行python -m unittest foo


1
投票

我知道有三个问题:

  1. 您在测试用例中的测试需要命名为qazxsw poi
  2. 您的测试文件需要命名为:test_*(默认情况下,您可以在运行测试时使用test*.py标志更改它)。例如-p
  3. 您的test_demo1.py文件夹中需要包含tests文件,否则它将不被视为从中导入的有效位置。

因此,对于#1,您需要将测试重命名为__init__.py。对于#2,有两种选择:

A - 重构您的文件,如下所示:

test_name_1

然后运行demo tests __init__.py test_demo1.py ,它应该找到测试用例。

B - 只需运行它:python -m unittest


0
投票

对我来说(从Intellij运行测试)我不得不删除类的'运行配置'。之前我错误地将unittest作为_pytest.unittest导入并运行了测试类。当然那没用。我更正了模块导入,但“运行配置”仍然存在,导致它作为Python脚本而不是“Python测试”运行。

© www.soinside.com 2019 - 2024. All rights reserved.