You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python unittest的setUp方法是否每次执行测试方法前都会重置?

问题解答

你观察到的运行结果是unittest框架的标准表现,self.dave的salary属性确实会在每个测试方法调用前重置为初始值,核心原因如下:

  • setUp()方法的执行规则:unittest框架规定,setUp()会在每一个以test开头的测试方法执行前,单独完整运行一次。也就是说你每跑一个测试方法,都会重新执行self.dave = Employee("dave", "stanton", 20000),生成一个全新的Employee实例,不同测试方法之间的self.dave是完全独立的对象,状态不会互相传递。
  • 测试用例的默认执行顺序:unittest默认按照测试方法名称的ASCII编码顺序排序执行,test_custom_raise的前缀test_c排序优先级高于test_default_raise的test_d,所以实际执行顺序和你以为的「先跑默认涨薪再跑自定义涨薪」刚好相反:
    1. 第一次执行setUp():生成工资为20000的dave实例,执行test_custom_raise传入10000涨薪,工资变为30000并打印,该测试执行完毕后实例被销毁
    2. 第二次执行setUp():重新生成工资为20000的全新dave实例,执行test_default_raise使用默认5000涨薪,工资变为25000并打印

如果你需要让所有测试方法共享同一个实例(不推荐,会导致测试用例耦合,不符合单元测试独立性原则),可以将实例化逻辑放在setUpClass()类方法中,该方法只会在整个测试类所有用例执行前运行一次。


内容的提问来源于stack exchange,提问作者bobo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 10:24:06