sco*_*ven 20 python django unit-testing webtest
我们在Django站点中有一堆命令,一些是管理命令,一些是在cron作业上运行的,我无法弄清楚如何测试.他们几乎看起来像这样:
# Saved in file /app/management/commands/some_command.py
# Usage: python manage.py some_command
from django.core.management.base import NoArgsCommand
class Command(NoArgsCommand):
def handle_noargs(self, **options):
# Do something useful
Run Code Online (Sandbox Code Playgroud)
我有一些测试,看起来像这样:
import unittest
from django.test import TestCase
from django_webtest import WebTest
class SomeTest(WebTest):
fixtures = ['testdata.json']
def setUp(self):
self.open_in_browser = False
# Set up some objects
def test_registration(self):
response = self.client.get('/register/')
self.assertEqual(response.status_code, 200)
form = self.app.get('/register/').forms[1]
# Set up the form
response = form.submit()
self.assertContains(response, 'You are Registered.')
if self.open_in_browser:
response.showbrowser()
# Here I'd like to run some_command to see the how it affects my new user.
Run Code Online (Sandbox Code Playgroud)
在我的测试中(我有评论)我想运行我的NoArgsCommand来查看我的新用户会发生什么.我找不到任何关于如何实现这一目标的文档或示例.还要注意我的测试环境是一个SQLlite数据库,我在内存中从头开始创建,加载一些灯具和对象并运行我的测试,所以尽管我想在真正的数据库中设置数据,然后运行我的从命令行命令,我不能,这太费时了.任何想法将不胜感激.
kgr*_*kgr 51
关于管理命令的Django文档可能会有所帮助,它描述了如何从python代码中调用它们.
基本上你需要这样的东西:
from django.core import management
management.call_command( ... )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8235 次 |
| 最近记录: |