Python单元测试运行报错TypeError:is_peak()缺少必填参数start_time如何解决
单元测试报错问题解决方案
你遇到的报错是两个错误共同导致的,对应修复方案如下:
错误原因1:实例方法调用规则错误
is_peak是Calculator类的实例方法,这类方法定义时第一个参数self指代实例对象,调用规则为:必须先创建类的实例,再通过实例调用方法。
你直接通过类名Calculator.is_peak()调用时,Python不会自动传入self参数,你输入的'9:40'会被识别为self的取值,系统自然会提示缺少第二个必填参数start_time。
错误原因2:调用的方法名拼写错误
Calculator类中定义的判断方法名为is_peak,你的测试代码中错误写为is_time,即便调用规则修复后也会触发方法不存在的报错。
修复后的测试代码
import unittest class Calculator(): def __init__(self): pass def is_peak(self, start_time: str): time = start_time.split(':') hour = time[0] int_hour = int(hour) return 6 <= int_hour < 18 class TestCalculator(unittest.TestCase): def test_time(self): # 先创建Calculator类的实例 cal = Calculator() # 通过实例调用正确的方法名is_peak self.assertEqual(True, cal.is_peak('9:40')) if __name__ == '__main__': unittest.main()
修复后运行单元测试即可正常通过,传入'9:40'时is_peak返回True,符合断言逻辑。
内容的提问来源于stack exchange,提问作者user16938825
相关产品推荐
相关产品推荐

