Python 这个测试显示了一个错误的答案

Python 这个测试显示了一个错误的答案,python,pytest,Python,Pytest,你们能告诉我我的单元测试出了什么问题吗 class Blizzard(Storm): def __init__(self, name, wind_speed, temp): self.temp = temp super().__init__(name, wind_speed) def calculate_classification(self) -> str: if self.wind_speed >= 35:

你们能告诉我我的单元测试出了什么问题吗

class Blizzard(Storm):
    def __init__(self, name, wind_speed, temp):
        self.temp = temp
        super().__init__(name, wind_speed)

    def calculate_classification(self) -> str:
        if self.wind_speed >= 35:
            return "Blizzard"
        elif self.wind_speed >= 45 and self.temp <= -12:
            return "Severe Blizzard"
        return "Snow Storm"

风速大于35,因此返回第一个if语句。

风速大于35,因此返回第一个if语句。

如果self.wind\u speed>=35:
-它匹配,因此您的
elif
不会触发。您应该交换它们的顺序,以便首先进行更具体的测试。在自动化测试之前,请手动测试代码。这与
pytest
无关——函数有故障。因此测试告诉您代码不正确。添加打印语句或以其他方式调试代码以找出原因。@Prune我不同意这种方法。自动化测试的意义在于,您不必手动测试。在这种情况下,自动测试可用于调试故障逻辑。
如果self.wind\u speed>=35:
-它匹配,因此您的
elif
不会触发。您应该交换它们的顺序,以便首先进行更具体的测试。在自动化测试之前,请手动测试代码。这与
pytest
无关——函数有故障。因此测试告诉您代码不正确。添加打印语句或以其他方式调试代码以找出原因。@Prune我不同意这种方法。自动化测试的意义在于,您不必手动测试。在这种情况下,自动测试可以用来调试错误的逻辑。该死,那太傻了,非常感谢:D@Kapol使用调试器可以避免愚蠢!妈的,太傻了,谢谢你:D@Kapol使用调试器可以避免愚蠢!
def test_severe_blizzard():
    b1 = Blizzard("Wendy", 46, -12)
    assert b1.calculate_classification() == 'Severe Blizzard'