在python中测试if-elif-else条件的有效方法是什么 - python

我有一堆需要评估的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“全部”不一定代表全部。您需要定义正常情况和边缘情况,但不一定要测试每个可能的日期。