Selenium Python断言成功后未打印断言消息问题求助
问题原因
Python的unittest框架中,assertEqual的第三个参数是断言失败时才会触发的错误提示消息,断言成功时框架默认不会输出这条消息——这是设计上的默认行为:只在验证失败时反馈问题,成功时保持输出简洁。
解决办法
如果你需要在断言成功时也打印预设的验证消息,可以用以下几种方式实现:
手动添加成功提示
在每个assertEqual执行后,直接添加打印或日志语句输出预设消息:def test_c_lms(self): self.driver.implicitly_wait(30) driver = self.driver dlms = Dashbaord_LMS(driver) dlms.LMS_method() # 断言后手动打印成功消息 self.assertEqual(dlms.lmshead_v, 'LIVE MONITORING SYSTEM', 'Lms Heading verified') print('Lms Heading verified') self.assertEqual(dlms.onlineag_v, 'Online Agents', 'Online agents heading verified') print('Online agents heading verified') # ... 其余断言同理 t = self.driver.current_url self.assertEqual(t, 'https://new.beelinks.solutions/dashboards/lms', 'url matched') print('url matched')要是想更规范,推荐用
logging模块替代print,方便后续控制日志级别和输出方式:import logging logging.basicConfig(level=logging.INFO, format='%(message)s') def test_c_lms(self): # ... 初始化代码 self.assertEqual(dlms.lmshead_v, 'LIVE MONITORING SYSTEM', 'Lms Heading verified') logging.info('Lms Heading verified') # ... 其余断言同理自定义带成功提示的断言方法
在你的测试类中封装一个自定义断言方法,继承原assertEqual的逻辑,同时在成功时输出消息:class YourTestClass(unittest.TestCase): def assertEqualWithSuccess(self, first, second, msg=None): # 先执行原断言逻辑 self.assertEqual(first, second, msg) # 断言成功且有消息时打印 if msg: print(msg) def test_c_lms(self): self.driver.implicitly_wait(30) driver = self.driver dlms = Dashbaord_LMS(driver) dlms.LMS_method() # 使用自定义断言方法 self.assertEqualWithSuccess(dlms.lmshead_v, 'LIVE MONITORING SYSTEM', 'Lms Heading verified') self.assertEqualWithSuccess(dlms.onlineag_v, 'Online Agents', 'Online agents heading verified') # ... 其余断言同理 t = self.driver.current_url self.assertEqualWithSuccess(t, 'https://new.beelinks.solutions/dashboards/lms', 'url matched')提升测试输出详细度
运行测试时加上-v参数(比如python -m unittest your_test_file.py -v),会输出每个测试方法的执行状态,但不会单独显示每个断言的成功消息,适合快速确认整个测试方法是否通过。
内容的提问来源于stack exchange,提问作者muhammad talhah
相关产品推荐
相关产品推荐

