我有一堆需要评估的python程序。该程序的基本框架包含一堆嵌套的If-elif-else语句。我想知道什么是测试程序(生成测试用例)的最有效方法。
以下是该程序的要点
if month == 1:
if day <= 20:
print("Capricorn")
else:
print("Aquarius")
elif month == 5:
if day <= 21:
print("Taurus")
else:
print("Gemini")
else:
if day <= 21:
print("Sagittarius")
else:
print("Capricorn")
它包含更多elif条件。但是我想,您明白了。我想知道如何生成测试用例或测试涵盖所有条件的代码。
python大神给出的解决方案
对于具有许多排列和组合的此类问题,您应该创建一个包含所有可能的输入和预期输出的矩阵,然后创建一个可以遍历表所有行的通用测试用例。
为什么是矩阵?因为这是可视化这种情况的最简单方法。例如,如果您有24种不同的测试的集合,那么某人将很难快速回答诸如“您涵盖2月29日的情况吗?”之类的问题。在表中包含所有日期和期望值的情况下,回答此类问题变得很简单,而当代码更改时添加其他测试用例也变得很简单。
例如,由于您的代码似乎是基于日历的,因此您将首先为每个月创建一行。然后,对于每个月,您将为所有重要条件创建行-月初,月末,当月内的特殊日期(即:如果20日应给出与21日不同的结果,等等)。
您的表在概念上可能看起来像这样:
| # month | day | sign
| 1 | 1 | capricorn
| 1 | 20 | capricorn
| 1 | 21 | aquarius
| 5 | 1 | taurus
| 5 | 21 | taurus
| 5 | 22 | gemini
... 等等。然后,编写一个可以读取每一行,调用该函数并将输出与预期结果进行比较的测试。
1“全部”不一定代表全部。您需要定义正常情况和边缘情况,但不一定要测试每个可能的日期。