[英]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
我知道三個問題:
test_*
test*.py
(默認情況下,您可以在運行測試時使用-p
標志更改它)。 例如test_demo1.py
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.