使用python中的unittest库进行代码测试

时间:2013-07-21 06:26:26

标签: python unit-testing

几天后,我试图了解如何在Python中正确使用unittest库。我有一些基础但我已经让自己成为一个挑战 - 测试我以前做过的两个功能。这些是功能:

    def PatternMatch(self, message, number):
        ret_status = 2 # 'No match'
        ret_pattern = -1  

        for pattern in self.PatternList:
            if pattern.active == 1 and pattern.LA == number:
                try:
                    RegExp = re.compile(pattern.regex)
                if RegExp.match(message):
                    ret_status = 1
                    ret_pattern = pattern.ID
                    break

        return ret_status, ret_pattern


    def GetPattern(self, patternID):
        pattern = None
        db = Database()
        query = 'CALL PATTERN_GET'
        query += '(@sql_err_code, @my_status, @my_msg, %s)'
        ret = db.query(query, [patternID])
        if len(ret['data']) == 2:
            pattern = Pattern(ret['data'][1])
        else:
            pattern = Pattern()

        result = {'status': ret['data'][0]}
        return pattern, result

我应该如何开始?我使用mox库嘲笑了数据库连接,它可以工作,但功能呢?我感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

鉴于问题的普遍性,只有一般建议是可能的 - 基本上你需要准备测试数据和/或输入,以执行以下操作:

  1. 代码覆盖率 - 强制所有决策路径下的所有执行路径。
  2. 决策覆盖范围 - 如上所述,但通过各种方式做出决定 - 例如如果> = 0需要使用< 0,a == 0和a> 0
  3. 角落案例覆盖 - 代码是否适用于非常大,非常小,非常消极,没有值。
  4. 异常覆盖:提升文档所说的所有异常,可以通过 try 子句中的代码引发,看看它们是否得到了正确处理或是否应该被允许通过。
  5. 始终启动每组测试数据,并清楚地说明您要在该组测试数据中实现的目标。