2015-05-04 39 views
3

不知道如何處理這種情況。 最近用django開始單元測試。 在我的項目中,我有一個自定義的change_list.html在管理頁面上添加一個按鈕。定製django管理模板的單元測試

我正在尋找可以驗證此自定義按鈕的單元測試。 這是我在admin.py代碼:

class LocationAdmin(OSMGeoAdmin): 

    def get_urls(self): 
     urls = patterns('', url(
      r'^import/$', 
      self.admin_site.admin_view(self.import_process) 
     )) 

     super_urls = super(LocationAdmin, self).get_urls() 

     return urls + super_urls 

    def import_process(self, request): 
     pass 

admin.site.register(Location, LocationAdmin) 

此代碼自動加載模板在app /管理/應用程序/應用/ change_list.html 那就是:

{% extends "admin/change_list.html" %} 
{% load staticfiles %} 
{% block extrahead %} 
    <link rel="stylesheet" href="{% static "css/custom_upload.css" %}"> 
{% endblock %} 
{% block object-tools-items %} 
    {{ block.super }} 
    <li><a role="button" href="import/" class="btn btn-primary btn-margin-left">Import</a></li> 

{% endblock %} 

但如何當你想用單元測試來證明這項工作嗎? 我能夠測試模板時,我可以用一個視圖和功能render_to_string 像這樣:

response = my_view(HttpRequest()) 
expected_html = render_to_string(
    'template.html', 
    {'arg_key': arg} 
) 
self.assertEqual(response.content.decode(), expected_html) 

但在這裏,我不弄清楚如何調用與關聯模板部件的管理視圖。 這裏是我發現在管理頁面添加單元測試的開始。

class MockRequest(object): 
    pass 


class MockSuperUser(object): 

    def has_perm(self, perm): 
     return True 

request = MockRequest() 
request.user = MockSuperUser() 


class ModelAdminTests(TestCase): 

    def setUp(self): 
     self.site = AdminSite() 

    def test_admin_import_button_on_location_admin_page(self): 
     ma = ModelAdmin(Location, self.site) 
     #Here the correct assert ? 

謝謝大家。

回答