unittest报错信息-解决方案

本文总结了unittest测试过程中遇到的一些典型错误,包括Windows环境下ImportError: cannot import name ‘main’的解决、ElementClickInterceptedException异常处理、ImportError: No module named XXX的排查以及assertEqual()缺失参数的修正。还介绍了driver隐式等待与time.sleep()的使用区别、页面元素定位异常的解决策略,以及Python中的静态方法和类方法应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.@property 标签,用于封装接口,使用当前标签可以引用框架的方法
在这里插入图片描述
2.page定位异常:maximum recursion depth exceeded —问题描述:由于嵌套太多超过最大递归深度
解决方法:手动调整递归深度
import sys
sys.setrecursionlimit(100000)
导致问题的场景:
在这里插入图片描述
3.driver.implicitly_wait()与time.sleep()的区别

implicitly_wait(5)属于隐式等待,5秒钟内只要找到了元素就开始执行,5秒钟后未找到,就超时;

time.sleep(5)表示必须等待5秒定位;

如何灵活运用这两种方式:

当某个页面元素变化多,影响多的情况下,用sleep,等页面元素稳定了,再定位。

如果用implicitly_wait(5),还没等页面元素稳定后就定位 ,导致定位不准确,比如操作某个元素后,会出现提示框,影响了后面元素的位置,导致定位不准确;所以用sleep,等提示框消失后开始定位

4.智能等待,用于解决每次都要显式等待太耗费时间的问题-但是遇到问题 click按钮无法点击,是由于已经获取到元素但是按钮还没展示出来导致的,报

### 解析 unittest 中的 AttributeError 错误 当遇到 `AttributeError` 错误时,通常意味着尝试访问的对象或模块中不存在指定属性或方法。对于 `unittest.TestCase` 或者类似的对象抛出此类异常,可能的原因和解决方案如下: #### 文件名冲突引发的错误 如果项目结构中存在名为 `unittest` 的文件夹或者 Python 脚本,则可能会覆盖标准库中的 `unittest` 模块,从而导致找不到预期定义的情况发生[^2]。 为了避免这种情况的发生,建议更改自定义包/脚本的名字为不与内置库重名的独特名称(例如命名为 `test`),同时确认源码内部引用仍然指向官方提供的 `unittest` 库而非本地同名实体。 #### 测试类继承关系配置不当 确保测试案例类正确地继承了来自 `unittest` 的 `TestCase` 基础类。这一步骤至关重要,因为只有通过这种方式才能使实例获得必要的成员函数支持,如 `setUp`, `tearDown` 等生命周期管理功能以及断言接口。 ```python import unittest class TestAdd(unittest.TestCase): # 正确做法:显式指明父类 def test_add(self): pass ``` #### 方法命名不符合约定 按照惯例,任何希望被自动发现并执行的方法都应当以前缀 `test_` 开始,并且这些方法应该属于某个派生自 `unittest.TestCase` 的具体实现类之下。如果不遵循此规则,即使实现了期望的行为逻辑,在构建测试集的时候也可能无法识别到它们作为有效的单元测试用例来加载和运行。 针对上述提到的关于 `addTest()` 使用过程中产生的问题,可以考虑调整代码结构使之满足以下条件之一: - 将待测行为封装在一个以字符串形式表示的方法名传给 `suite.addTest(TestAdd('method_name'))`; - 利用 `unittest.TestLoader().loadTestsFromTestCase(TestAdd)` 来动态扫描目标类别下的所有符合条件的测试点; #### DDT 扩展库引起的特殊情形 考虑到还提到了 ddt (Data Driven Tests) 工具带来的挑战——即试图获取不属于当前上下文范围内的静态字段所造成的失败状况。此时应仔细检查装饰器应用的位置及其参数设置是否合理有效,保证数据驱动机制能够顺利作用于每一个独立的测试场景之上而不至于越界操作。 最后值得注意的是,生成 HTML 格式的测试结果文档同样依赖于特定的工作流设计模式,因此务必参照相应框架的要求完成环境搭建工作,包括但不限于安装额外插件、导入辅助资源等前置准备活动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值