2

几天来,我试图学习如何在 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 库模拟了数据库连接,它可以工作,但是功能呢?我很感激任何帮助。

4

1 回答 1

5

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

  1. 代码覆盖率 - 强制所有执行路径沿着每个决策路径。
  2. 决策覆盖率 - 如上所述,但通过每种决策方式 - 例如,如果 a >= 0 需要使用 a < 0、a == 0 和 a > 0 进行测试。
  3. 极端情况覆盖 - 代码是否适用于非常大、非常小、非常负、没有值的情况。
  4. 异常覆盖率:引发文档中提到的所有异常,这些异常可以由try子句中的代码引发,并查看它们是否被正确处理或应该被允许通过。
  5. 始终以明确说明您在该组测试数据中要达到的目标来开始每组测试数据。
于 2013-07-21T07:37:22.523 回答