Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python unittest不运行测试_Python_Unit Testing_Python Unittest - Fatal编程技术网

Python unittest不运行测试

Python unittest不运行测试,python,unit-testing,python-unittest,Python,Unit Testing,Python Unittest,我做了一个名为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

我做了一个名为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
你需要通过考试


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

我刚才也遇到过同样的问题,我使用test discovery命令解决了这个问题

python-m单元测试发现-s.

您还可以传入测试文件模式以及一整套其他选项,我(从中运行测试)必须删除类“运行配置”。早些时候,我错误地将unittest作为_pytest.unittest导入,并运行了测试类。那当然不行


我更正了模块导入,但“运行配置”仍然存在,导致它作为Python脚本而不是“Python测试”运行。

我知道有三个问题:

  • 测试用例中的测试需要命名为
    test.*
  • 您的测试文件需要命名为:
    test*.py
    (默认情况下,您可以在运行测试时使用
    -p
    标志对其进行更改)。e、 g.
    test\u demo1.py
  • 您的
    测试
    文件夹中需要有一个
    \uuuu init\uuuuu.py
    文件,否则它将不被视为导入的有效位置
  • 因此,对于#1,您需要将测试重命名为
    test#u name_1
    。对于#2,有两种选择:

    A-按如下方式重新构造文件:

    demo
        tests
            __init__.py
            test_demo1.py
    
    然后运行
    python-m unittest
    ,它会找到测试用例


    B-只需像这样运行:
    python-m unittest discover-p*test.py

    您可以共享项目的目录结构吗?
    python test\u demo.py
    首先,如果您正在执行
    python-m unittest
    ,那么在脚本中,
    \u name\u
    不等于“main”.请查看原始问题的编辑以查看目录结构。另外,John Gordon,你是什么意思?您可以看到上面的代码,它是main。默认使用discover不是甚至没有在命令中显式传递它吗?顺便说一句,这对我来说也是失败的,得到了与上面相同的结果,跑0tests@BaronYugovich它可能失败了,因为匹配测试文件的默认模式是
    test*.py
    ,而测试文件名
    demo\u test1.py
    只能由
    “*\u test*.py”
    Try
    python-m unittest discover-s匹配-p“*test*.py”
    No,这就是我想要避免的。我想让它运行一个项目中的所有测试。假设这是一个包含100个模块的大型项目,我不想显式地传递它们。