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 ?
謝謝大家。