Django单元测试 - 为什么我不能直接运行./tests.py?
我对 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)
谢谢你的帮助!!
**** 更新 ****
我想做的(真是的!)就是简单地运行 "myApp" 的测试。问题是,这个方法可以用(而且 chmod 也不是问题),但它想要运行整个测试套件。我并不想这样。我只想运行 myApp
的测试套件。
再次感谢!
2 个回答
-1
a. 这行代码应该是你代码文件(tests.py)的第一行。
#!/usr/bin/env python
b. 运行 $ chmod +x tests.py
这条命令。
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_loc
和 project_name
。