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-T520:~/workspacep/demo$ python -m unittest

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

OK

为什么这行不通?一般而言,如何使用一行从命令行运行所有单元测试?

目录结构为

demo
    tests
          demo_test1.py  __init__.py

最佳答案

我知道三个问题:

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

因此,对于 #1,您需要将测试重命名为 test_name_1。对于 #2,有两个选项:

A - 像这样重组您的文件:

demo
    tests
        __init__.py
        test_demo1.py

然后运行 ​​python -m unittest 它应该会找到测试用例。

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

关于Python unittest 不运行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52013612/

相关文章:

unit-testing - 如何测试或描述无穷无尽的可能性?

javascript - 对象中的测试元素是空的,开玩笑

在类中使用的 Python 模拟 os.environ

python - Pycharm 以详细模式运行单元测试

python - 错误 R14(超出内存配额)导致在 Heroku 中使用 Selenium 与 Python、FastAPI 和 Celery 时出现 TimeoutException

python - 在 m1 Monterey 上安装 uWSGI 失败并出现 python 3.10.0

Python:无论 CaSE 是什么,检查值是否在列表中

python - 使用 SQLAlchemy 连接到 Amazon Aurora

python - 有人知道 nosetest 的 -m、-i 和 -e 是如何工作的吗?

python - 如何创建可下标的 Mock 对象?