簡體   English   中英

Python unittest 不運行測試

[英]Python unittest does not run tests

我做了一個名為 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 -m unittest discover -s.

您也可以傳入測試文件模式和其他所有選項https://docs.python.org/2/library/unittest.html#test-discovery

您需要傳入一個模塊列表

例如,如果您的測試文件是foo.py ,那么您可以運行python -m unittest foo

對我來說(從IntelliJ IDEA運行測試)我不得不刪除類' '運行配置' 早些時候我錯誤地將 unittest 導入為 _pytest.unittest 並運行了測試類。 當然那沒有用。

我更正了模塊導入,但“運行配置”仍然存在,導致它作為 Python 腳本運行,而不是作為“Python 測試”運行。

我有一個類似的問題,我發現我必須運行python3 -m unittest而不是因為我忘記了我系統上的python默認為 Python 2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM