"Empty test suite" by 运行 Django 使用 Pycharm 进行测试(如果从 shell 启动,则会发现测试)

"Empty test suite" by running Django tests with Pycharm (tests are found if launched from the shell)

我很难尝试使用 PyCharm 运行 我的 Django 测试。 我过去使用 "python running configuration" 轻松做到了,其中我使用 manage.py 到 运行 它们,我在 OSX 上使用 python 2.7,Django < = 1.7,Pycharm <= 4。 现在我使用 Linux Mint,我使用 Python 3.4.3、Django 1.8.2 和 Pycharm 4.5。 我一直使用 virtualenv 来管理我的项目。 现在 运行ning "manage.py test" 从 Pycharm 没有找到测试(它打印 "Empty test suite")。 但是测试是存在的,如果我 运行 来自 shell 的命令,它们就会被执行。 所以我真的不明白这是怎么回事。 我实际上能够使用我创建的 "an hack" 启动测试,但问题是 Pycharm 无法附加到进程以允许测试中的断点(这是我的功能之一使用最多!)。 我的 "hack" 如下:

我创建了一个 python 脚本:

import subprocess


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


if __name__ == '__main__':
    main()

然后 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

实际上,python 脚本用于为 Pycharm 创建一个 "python running configuration",然后它激活 virtualenv 并调用 django 测试命令。

ps:是的,我在PyCharm中开启了"Django support"(并且我在virtualenv下配置了python解释器)

使用 pycharm,您可以通过创建测试配置直接 运行 您的测试。使用 运行>Edit Configuration 创建一个配置。从 Django 测试添加一个配置,设置虚拟环境路径、工作目录(manage.py 的路径)、目标模块(如 complete_project 或 complete_project.app_name)。 运行 配置,它将 运行 来自相应模块的 tests.py 的测试。

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

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

对于我的情况,这是因为我的测试方法的名称没有以 test 开头。重命名它们,PyCharm 开始正确 运行 它们。