Django单元测试 - 为什么我不能在myApp上运行./tests.py?

时间:2009-11-12 04:29:46

标签: python django eclipse unit-testing pydev

所以我对manage.py test myapp非常熟悉。但我无法弄清楚如何使tests.py作为一个独立的可执行文件工作。您可能想知道我为什么要这样做..我正在Eclipse中工作(现在)我似乎无法弄清楚如何设置工具来简单地运行此命令。无论以简单的方式简单地包装tests.py来运行它都是非常好的。

这是tests.py的样子。

"""
This simply tests myapp
"""
import sys
import logging
from django.test import TestCase

from django.conf import settings
from django.test.utils import get_runner

class ModelTest(TestCase):

    def test_model_test1(self):
        """
        This is test 1
        """
        self.failUnlessEqual(1 + 1, 2)

    def test_model_test2(self):
        """
        This is test 2
        """
        self.failUnlessEqual(1 + 1, 2)

    def test_model_test3(self):
        """
        This is test 3
        """
        self.failUnlessEqual(1 + 1, 2)

def run_tests():
    test_runner = get_runner(settings)
    failures = test_runner([], verbosity=9, interactive=False)
    sys.exit(failures)

if __name__ == '__main__':
    # Setup Logging
    loglevel = logging.DEBUG
    logging.basicConfig(format="%(levelname)-8s %(asctime)s %(name)s %(message)s",
                        datefmt='%m/%d/%y %H:%M:%S', stream=sys.stdout)
    log = logging.getLogger("")
    run_tests()

我认为解决方案位于此行,但我似乎无法弄清楚第一个参数需要什么才能让它神奇地开始工作..

failures = test_runner([], verbosity=9, interactive=False)

感谢您的帮助!!

****更新****

我想做的事(Doh!)就是简单地运行“myApp”测试。问题是这个工作(并且chmod不是问题)但它想运行整个测试套件。我不希望这样。我只想运行myApp测试套件。

再次感谢!

2 个答案:

答案 0 :(得分:1)

您可以为项目创建“外部工具”配置,例如:

Location: ${project_loc}/src/${project_name}/manage.py
Working Directory: ${project_loc}/src/${project_name}/
Arguments: test ${string_prompt}

这将运行manage.py test<您在字符串提示符中键入的任何名称>。

以上值假设您在Eclipse中创建了一个pydev项目,然后将您的Django项目存放在pydev src目录中。它还假设您具有pydev的项目名称与Django项目的名称相同。它将使用包浏览器中当前选定的项目来确定project_locproject_name

答案 1 :(得分:-1)

一个。这应该是代码文件的第一行(tests.py)

#!/usr/bin/env python

湾运行$ chmod +x tests.py