2012-03-02 62 views
14

Chúng tôi có một loạt lệnh trong trang web Django của chúng tôi, một số là quản trị và một số chạy trên cron job mà tôi không thể tìm ra cách kiểm tra. Họ khá nhiều giống như thế này:Chạy lệnh quản lý Python/Django từ UnitTest/WebTest

# 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 

Và tôi có một số xét nghiệm, mà trông như thế này:

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. 

Trong thử nghiệm của tôi (nơi tôi có những nhận xét) Tôi muốn chạy NoArgsCommand của tôi để xem điều gì xảy ra với người dùng mới của tôi. Tôi không thể tìm thấy bất kỳ tài liệu hoặc ví dụ về cách thực hiện điều này. Cũng lưu ý rằng môi trường thử nghiệm của tôi là một SQLlite DB mà tôi tạo từ đầu trong bộ nhớ, tải một số đồ đạc và các đối tượng vào và chạy thử nghiệm của tôi, nhiều như tôi muốn thiết lập dữ liệu trong DB thực, sau đó chỉ cần chạy lệnh từ dòng lệnh, tôi không thể, nó quá tốn thời gian. bất kì ý kiến ​​nào đều được đánh giá cao.

Trả lời

42

Django documentation on management commands có thể trợ giúp, nó mô tả cách gọi chúng từ mã python.

Về cơ bản bạn cần một cái gì đó như thế này:

from django.core import management 
management.call_command(...) 
+0

RTFM, doh! Cảm ơn bạn, tôi đã không nhận thức được rằng thậm chí tồn tại. – scoopseven

+0

Xảy ra cho tất cả chúng ta, đặc biệt là vào thứ Sáu :) Và tất nhiên, bạn được chào đón! – kgr

+0

Cảm ơn! Tôi đã cố gắng để chạy thử nghiệm đơn vị của tôi từ Visual Studio và không thể có được nó cho đến khi tôi theo liên kết tham khảo của bạn. – TurboGus

Các vấn đề liên quan