我刚刚“移植”了一个我正在写给PyCharm的Python包,并且在从IDE运行整个包的单元测试时遇到了一些麻烦。
在__init__.py
的包中,我有load_tests
函数,它遍历包中的所有模块并加载相关的测试。它运行得非常出色:
$python -m unittest my_package
然而,当我尝试从PyCharm运行它时(通过选择Projects窗口中的顶级目录并点击 Ctrl + Shift + F10 ),我在Run窗口中得到No tests were found
,并且
...\python.exe ...\pycharm\utrunner.py .../my_package/ true
Testing started at ...
Process finished with exit code 0
Empty test suite.
在控制台窗口中。
我快速浏览了PyCharm的utrunner.py
,看来它正在寻找具有某种模式的模块(以 test 开头)。我想保留目前的香草方法。如何在尽可能少地修改代码的同时将PyCharm配置为使用load_tests
中的__init__.py
?
顺便说一句,各个模块的测试套件可以从PyCharm运行得很好。
使用PyCharm 3.1 Community Edition,Python 2.7。
提前谢谢。
答案 0 :(得分:5)
这个答案是考虑到PyCharm 3.4。
有同样的问题,在这个答案中找到问题的解决方案,希望我理解你的问题:
https://stackoverflow.com/a/12242021/2427749
我配置了我的Python Test runner配置:
现在它在名为classToBeTested_Test.py
答案 1 :(得分:2)
使用PyCharm 2016.2:
/path/to/tests/__init__.py
utrunner
使用unittest.TestLoader.loadTestsFromModule()
,并且该方法会在模块中显示load_tests()
。即。命令是
python C:\python\pycharm\helpers\pycharm\utrunner.py /path/to/tests/__init__.py true
我还必须从sys.path
中的__init__.py
删除测试目录(请参阅PY-15889):
basedir = os.path.dirname(__file__)
try:
sys.path.remove(basedir)
except ValueError:
pass