CS50P Cookie Jar作业:Jar类构造函数初始化测试报错求助
问题排查方向
- 构造函数参数顺序不符:你的
Jar类__init__参数顺序是current=0, capacity=12(当前饼干数在前),如果测试用例预期参数顺序是容量在前(比如Jar(容量, 当前数=0)),那测试调用Jar(10)时会把current设为10、capacity用默认值12,完全不符合预期,触发后续错误。 - 容量合法性判断太严格:你判断
capacity < 1就抛出异常,但如果测试用例允许容量为0(空罐子),创建Jar(capacity=0)会直接抛出ValueError,导致测试进程崩溃(退出码1)。而且错误信息写的是“cannot be negative cookies”,容量0不是负数,提示也不准确。 - 构造函数异常未被测试捕获:自动测试用例可能没处理构造函数抛出的异常,一旦触发就直接终止进程,返回非0退出码。要确认测试用例是否预期某些参数会触发异常,还是你的代码在合法参数下误抛了异常。
- 公共属性
current的访问违规:你的代码里current是公开属性,但如果作业要求只能通过size属性访问当前饼干数,测试用例直接访问jar.current会出错,不过这种情况一般是断言失败,不是进程崩溃,但也得排查。 - 测试用例输入超出代码逻辑:比如自动测试用例调用
Jar(13)(current=13,默认capacity=12),会触发current > capacity的异常,导致进程崩溃。要确认测试用例的输入是否符合你的代码校验规则。
内容的提问来源于stack exchange,提问作者user26507595
相关产品推荐
相关产品推荐

