pytest自动化测试 - 我对测试用例超时处理的一点看法
1 pytest自动化测试 - 我对测试用例超时处理的一点看法
1.1 背景
用例在执行过程中,可能由于网络等待,或者等待一些特殊的文件,而又由于一些异常,导致这些条件一直不能满足,用例卡死,这种情况在自动化测试中是不允许的,会浪费大量的时间,影响测试任务的进度,甚至导致版本发布周期的延长。
为了给每个用例都设置上超时时间,有以下几种方法:
1.2 方法1:给每个用例添加@pytest.mark.timeout修饰器
@pytest.mark.timeout在Windows下并不能很好的工作,1 个用例出现超时,整个测试任务就中断了,非常扯淡!
1.3 方法2:使用钩子函数给每个用例添加一个timeout修饰器
然而,下面这个做法,在Windows下并没有什么卵用!,超时的那个用例也执行成功了!
Windows下的执行结果:
其他所谓的使用timeout标记的超时处理在Windows下都没有什么卵用!
1.4 方法3:介绍一个自己写的使用线程处理用例超时的方法
用例的超时,其实主要是监控每条任务的超时情况,通过创建1个基础函数base_func这个函数每次调用时都创建1个线程,并给线程设置超时时间,用例中的执行语句都通过这个线程函数base_func来执行,base_func中对超时任务会设置失败。
输出结果:
两个用例都执行了, 第2个用例并没有因为第1个用例超时而中止执行!
使用基础函数来包装测试执行语句的必要性, 因为实际在测试执行时, 每个语句都有可能执行超时,对其进行封装执行可以保证测试脚本的严谨性。
作者声明:本文用于记录和分享作者的学习心得,可能有部分文字或示例来自AI平台,如:豆包、DeepSeek(硅基流动)(注册链接)等,由于本人水平有限,难免存在表达错误,欢迎留言交流和指教!
Copyright © 2022~2025 All rights reserved.

浙公网安备 33010602011771号