使用Pycharm运行Django测试的"空测试套件"(如果从shell启动,则会发现测试)

dav*_*ode 2 python django unit-testing pycharm

我正在努力尝试使用PyCharm运行我的Django测试.我过去很容易使用"python运行配置",我曾经在运行它们,我在OSX上使用python 2.7,Django <= 1.7,Pycharm <= 4.现在我在Linux Mint上,我使用Python 3.4.3,Django 1.8.2和Pycharm 4.5.我总是使用virtualenv来管理我的项目.现在通过从Pycharm运行"manage.py test",没有找到任何测试(它打印"Empty test suite").但是测试存在,如果我从shell运行命令,它们就会被执行.所以我真的不明白发生了什么.我实际上能够使用我创建的"hack"启动测试,但问题是Pycharm无法附加到进程以允许测试中的断点(这是我最常用的功能之一!) .我的"黑客"如下:manage.py

我创建了一个python脚本:

import subprocess


def main():
    subprocess.call('./venv_activator.sh', shell=True)


if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

然后是一个bash脚本(venv_activator.sh):

#!/usr/bin/env bash
source .ENV/bin/activate
python manage.py test myapp -p "*_tests.py" --noinput -v 2 --settings=settings.test
Run Code Online (Sandbox Code Playgroud)

在实践中,python脚本用于为Pycharm创建"python运行配置",然后它激活virtualenv并调用django test命令.

ps:是的,我在PyCharm中启用了"Django支持"(我在virtualenv下配置了python解释器)

dav*_*ode 6

问题是PyCharm不会将给定的搜索模式应用于测试文件(-p"*_tests.py").这是一个已经报告的错误:https://youtrack.jetbrains.com/issue/PY-15869

解决方案是简单地重命名我的文件:P