Python单元测试报错求助:Form类测试代码无法正常运行
代码错误排查与修复
业务代码问题及修复
存在的错误
- 调用未定义函数:最后一行
print(form_url("https://itproger.com"))中的form_url从未声明,运行时会抛出NameError。 - 链接参数冗余:
form2的link参数重复了https://前缀,属于逻辑瑕疵,不影响运行但不符合规范。
修复后的业务代码
class Form: def __init__(self, name, pas, email='', link=''): self.name = name self.pas = pas self.email = email self.link = link form = Form("Mam", "testpas") form2 = Form("Dad", "testpas2", "ex@gma.co", "https://stackoverflow.com/") # 若需要form_url功能,先定义函数 def form_url(url): return f"处理后的URL: {url}" print(form_url("https://itproger.com"))
单元测试代码问题及修复
存在的错误
- 实例化类时缺省必填参数:
Form的构造方法要求至少传入name和pas,setUp里直接调用form.Form()会抛出TypeError。 - 测试逻辑矛盾:同一个实例不可能同时拥有
name="Mam"和name="Dad",断言会全部失败。 - 测试用例未区分实例:应该针对两个不同的
Form对象分别验证属性。
修复后的单元测试代码
import unittest import form class TestForm(unittest.TestCase): def setUp(self): # 创建两个测试实例 self.form1 = form.Form("Mam", "testpas") self.form2 = form.Form("Dad", "testpas2", "ex@gma.co", "https://stackoverflow.com/") def test_form1_init(self): self.assertEqual(self.form1.name, "Mam") self.assertEqual(self.form1.pas, "testpas") self.assertEqual(self.form1.email, "") # 验证默认空值 self.assertEqual(self.form1.link, "") # 验证默认空值 def test_form2_init(self): self.assertEqual(self.form2.name, "Dad") self.assertEqual(self.form2.pas, "testpas2") self.assertEqual(self.form2.email, "ex@gma.co") self.assertEqual(self.form2.link, "https://stackoverflow.com/") if __name__ == '__main__': unittest.main()
内容的提问来源于stack exchange,提问作者Everyone make mistakes
相关产品推荐
相关产品推荐

