使用数据访问层和应用程序层时的TDD方法

时间:2015-08-18 06:56:44

标签: python database unit-testing testing tdd

我是TDD的新手。我想要一些关于如何对由实现实际数据库访问语句的数据层形成的应用程序进行单元测试的技巧,以及其作业仅限于调用数据层方法的应用程序层。例如:

在我的数据层类中,名为CassandraDataLayer,我有一个retrieveMessage方法:

class CassandraDataLayer:

    def retrieveMessage(self,message_id):
        #database access statements to retrieve the message
        #returns a Message class instance

另一方面,在我的应用程序层类(称为ApplicationLayer)中,我有以下retrieveMessage方法:

class ApplicationLayer:

    def retrieveMessage(self,message_id):
        return self.dataLayer.retrieveMessage(message_id)

我是否必须对这两种方法进行单元测试?

为了测试我的CassandraDataLayer retrieveMessage方法,我进行了以下操作:

  1. 我实例化一个测试数据库。
  2. 我手动将消息插入其中
  3. 然后,我调用retrieveMessage尝试检索消息
  4. 最后,声明插入的消息和检索到的消息是相同的。
  5. 但是,那么,我该如何测试应用层类的retrieveMessage方法呢?我是否必须再次使用相同的逻辑?是不是还原剂?

1 个答案:

答案 0 :(得分:0)

根据要求,为了清楚起见,我正在将我的两条评论移到这个答案。

您的测试看起来多余的原因是,目前您的代码相当多余。因为应用程序层的行为只是返回通过数据层返回的内容,所以你的第二个测试现在唯一确认的是解释器是否正确处理返回调用(理想情况下,它是代码的不变量: )。

当您继续向应用程序层添加功能时,TDD要求您也修改此测试或添加其他测试该功能,因此您对数据层和应用程序层的测试看起来不那么多余,因为两个UUT是相同。