Python单元测试备份静态

2024-07-05 14:34:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用python进行单元测试,但是在statics属性方面遇到了问题。
问题是: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()和{}来避免这种情况,但在我的情况下不是这样(很难举例说明)。我想让脚本自动备份类的所有静态属性,就像我在PHP中习惯的那样。在

我用nose(nosetests path_to_tests)运行所有单元测试,但如果需要,我会切换“测试框架”。在


Tags: selfconfig属性vardef静态myclass情况
1条回答
网友
1楼 · 发布于 2024-07-05 14:34:34

我不知道为什么要避免使用setup()和teardown()函数,但是不管是什么原因,是什么阻止了您构建自己的伪setup函数?例如:

def test1(self):
    MyClass.prep()
    self.assertIsNone(MyClass.var)
    Config.var = "It works"
    self.assertEquals("It works", MyClass.var)

def test2(self):
    MyClass.prep(var="whatever")
    self.assertIsNone(MyClass.var) # Fails
    Config.var = "It works really"
    self.assertEquals("It works really", MyClass.var)

def prep(self, var="temp", var2="temp2"):
    MyClass.var = var
    MyClass.var2 = var2 

在某些情况下,我需要一个外部设备来测试,以使其自身失效。我只是建立了一个函数来关闭它,在我想做的任何测试中,我都会运行“prep”函数来确保测试有效。如果测试成功了,就在测试结束之前,我会再次调用prep函数来打开设备。在

相关问题 更多 >