如何为wxPython中调用event.Skip()的方法编写覆盖率测试用例?
测试调用event.Skip()的方法时,需传入何种event参数?
我正尝试提升覆盖率报告的覆盖率,想要为仅包含一行event.Skip()代码的OnCPrinterChoice方法编写带assert语句的测试用例。但无论传入何种类型的event参数(如字符串、整数、浮点数、列表等),都会触发AttributeError。例如测试用例assert DPrintSettings.Dialog1.OnCPrinterChoice("test", new_tree) == None会报错:AttributeError: 'int' object has no attribute Sa-�.api Rep醉当前泛 ense bootOptionalstatusauthorcc10
解决方案
你需要传入一个带有Skip方法的模拟对象,以下是两种简单可行的方式:
手动创建模拟类
自己定义一个极简类,只实现Skip方法即可:class MockEvent: def Skip(self): pass测试时传入该类的实例:
mock_event = MockEvent() assert DPrintSettings.Dialog1.OnCPrinterChoice(mock_event, new_tree) is None使用unittest.mock.Mock(推荐)
如果你用Python的unittest测试框架,直接用内置的Mock对象,还能验证Skip方法是否被正确调用:from unittest.mock import Mock mock_event = Mock() DPrintSettings.Dialog1.OnCPrinterChoice(mock_event, new_tree) # 验证Skip方法被调用了一次,比断言返回None更能确保逻辑正确 mock_event.Skip.assert_called_once()
内容的提问来源于stack exchange,提问作者cc10
相关产品推荐
相关产品推荐

