【发布时间】:2013-05-21 17:25:02
【问题描述】:
我正在尝试在 python 中进行单元测试,但我遇到了静态属性问题。
问题是:Python 不备份静态属性,这意味着测试行为不可预测。这是一个示例代码:
def test1(self):
self.assertIsNone(MyClass.var)
Config.var = "It works"
self.assertEquals("It works", MyClass.var)
def test2(self):
self.assertIsNone(MyClass.var) # Fails
Config.var = "It works really"
self.assertEquals("It works really", MyClass.var)
在给定的情况下,我可以通过在第一次测试结束时或使用setUp() 和tearDown() 重置值来避免这种情况,但在我的情况下不是(很难举例)。我想让脚本自动备份类的所有静态属性,就像我在 PHP 中习惯的那样。
我用鼻子 (nosetests path_to_tests) 运行所有单元测试,但如果需要,我会切换“测试框架”。
【问题讨论】:
-
Fwiw,首先使用全局可变数据(并且类属性是全局的)通常被认为是不好的风格。
-
我无法避免它,因为在运行测试时调用的方法不幸地改变了类属性。我想备份所有类属性,以便每个测试都具有相同的默认类属性和全局变量。测试完成后,应重置所有全局和类属性。
标签: python unit-testing static-members nose