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

时间:2015-06-01 07:46:29

标签: python django unit-testing pycharm

我很难尝试使用 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来管理我的项目。 现在通过从Pycharm运行“manage.py test”,没有找到任何测试(它打印“Empty test suite”)。 但是测试存在,如果我从shell运行命令,它们就会被执行。 所以我真的不明白发生了什么。 我实际上能够使用我创建的“hack”启动测试,但问题是Pycharm无法附加到进程以允许测试中的断点(这是我最常用的功能之一!) 。 我的“黑客”如下:

我用:

创建了一个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 test命令。

ps:是的,我在PyCharm中打开了“Django支持”(我在virtualenv下配置了python解释器)

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

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