2016-11-21 4 views
0

私が使用してカバレッジをテストしようとしているDjangoのadmin.pyとイムでカスタム関数を作成:カバレッジテストDjangoの管理カスタム関数

class Responsible(admin.ModelAdmin): 

    """ 
    Inherits of admin class 
    """ 

    list_display = ('user', 'Name', 'last_name', 'process',) 
    search_fields = ('p__name', 'user__username') 

    def User_Name(self, obj): 
     return obj.user.first_name 

    def User_Last_Name(self, obj): 
     return obj.user.last_name 

責任モデルは、私がこれまでのところ... Djangoのユーザモデルの外部キーを持っています

class AdminTestCase(TestCase): 

    fixtures = ["initial_data.json"] 


    def test_first_name(self): 
     rsf = Responsible.objects.get(id = 1) 
     User_Name(rsf) 

    def test_first_name2(self): 
     self.obj = Responsible.objects.get(id = 1) 

しかし、何も動作しません....任意の助けてください?

ありがとうございます!

答えて

0

実際に私はそれを見つけた、と誰かが今までそれを必要とする場合、それは非常に簡単でした:やったことがないあなたの答えのための

def test_first_name_admin(self): 
    rsf = ResponsibleStateFlow.objects.get(id = 1) 
    ResponsibleStateFlowAdmin.User_Name(self, rsf) 
    ResponsibleStateFlowAdmin.User_Last_Name(self, rsf) 
1

django管理者のResponsibleモデルでは、djangoクライアントとオープンリストページを使用する必要があります。カスタム関数が呼び出されますので、テストの対象となります管理者リストページを開くことにより

https://docs.djangoproject.com/en/1.10/topics/testing/tools/#overview-and-a-quick-example

だから基本的には以下のようなものが行われる必要があります:

from django.test import Client, TestCase 

class BaseTestCase(TestCase): 
    """Base TestCase with utilites to create user and login client.""" 

    def setUp(self): 
     """Class setup.""" 
     self.client = Client() 
     self.index_url = '/' 
     self.login() 

    def create_user(self): 
     """Create user and returns username, password tuple.""" 
     username, password = 'admin', 'test' 
     user = User.objects.get_or_create(
      username=username, 
      email='[email protected]', 
      is_superuser=True 
     )[0] 
     user.set_password(password) 
     user.save() 
     self.user = user 
     return (username, password) 

    def login(self): 
     """Log in client session.""" 
     username, password = self.create_user() 
     self.client.login(username=username, password=password) 


class AdminTestCase(BaseTestCase): 

    def test_responsible_list(self): 
     response = self.client.get('/admin/responsilbe_list/') 
     # assertions.... 
+0

おかげで、それは... "User_Name"という最初の関数の答えの例を私に与えることができますか? – jsanchezs

+0

更新された回答。 – falloutcoder

+0

私はあなたの助けに感謝しますが、私はそれが私が必要とするものではないと思う、私はすでにログインとログアウトをテストしました...私が必要とするものは、私が投稿したそれらの機能をテストすることです – jsanchezs