Bar*_*ich 11 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()
Run Code Online (Sandbox Code Playgroud)
但是,从命令行
ThinkPad-T520:~/workspacep/demo$ python -m unittest
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
Run Code Online (Sandbox Code Playgroud)
为什么这不起作用?一般而言,如何使用一行从命令行运行所有单元测试?
目录的结构是
demo
tests
demo_test1.py __init__.py
Run Code Online (Sandbox Code Playgroud)
Mul*_*ter 16
我知道的三个陷阱:
test_*test*.py默认情况下,您可以-p在运行测试时使用标志更改它)。例如test_demo1.pytests文件夹中需要有一个__init__.py文件,否则它不会被视为导入的有效位置。因此,对于 #1,您需要将测试重命名为test_name_1. 对于#2,有两种选择:
A - 像这样重构你的文件:
demo
tests
__init__.py
test_demo1.py
Run Code Online (Sandbox Code Playgroud)
然后运行python -m unittest,它应该找到测试用例。
B - 像这样运行它:python -m unittest discover -p *test.py
不久前,我遇到了同样的问题,并通过使用 test discovery 命令解决了它。
python -m unittest discover -s .
您也可以传入您的测试文件模式以及其他选项https://docs.python.org/2/library/unittest.html#test-discovery
| 归档时间: |
|
| 查看次数: |
8176 次 |
| 最近记录: |