2014-04-25 158 views
0

在我的web应用程序中,我有一个ListItem类,然后是许多其他基于此类但具有不同名称的类。基于测试用例的Django测试用例

我有目前所有这些单独的测试模块。这意味着很多重复的测试代码。

我想创建一个BaseListItemTestCase类,它有一个变量self.listitem_model集合,在其所有的测试中使用它。这意味着代码不会重复。

self.listitem_model将设置在一个子测试用例中,该子测试用例只包含一个init()方法来设置它。

我做了以上所有的事情,问题是,如果在Base测试类中测试1测试并且我只运行了子测试用例,则测试运行两次。

是否有什么原因呢?我只是想让我跑过去跑步的测试。

class BaseListItemTestCase(APITestCase): 
    def __init__(self, *args, **kwargs): 
     super(BaseListItemTestCase, self).__init__(*args, **kwargs) 
     self.listitem_model = None 

    def test_something(self): 
     self.assertEqual(self.listitem_model.objects.all().count(), 0) 

class LikeListTestCase(BaseListItemTestCase): 

    def __init__(self, *args, **kwargs): 
     super(LikeListTestCase, self).__init__(*args, **kwargs) 
     self.listitem_model = LikeListItem 

回答

1

您已将测试方法放入基类中,所以它由子类继承。现在有两个类test_something方法,所以两个都会运行。

将测试放在子类中。或者,如果您希望逻辑位于基类中,请将其放入不属于test_的方法中,并在简单地调用该方法的子类中拥有基本的test_something方法。