python - 在unittest中的测试之间保持变量变化?

标签 python unit-testing persistence testcase python-unittest

如何在 unitttest 中保留从 TestCase 继承的同一对象中所做的更改?

from unittest import TestCase, main as unittest_main


class TestSimpleFoo(TestCase):
    foo = 'bar'

    def setUp(self):
        pass

    def test_a(self):
        self.assertEqual(self.foo, 'bar')
        self.foo = 'can'

    def test_f(self):
        self.assertEqual(self.foo, 'can')


if __name__ == '__main__':
    unittest_main()

即:我希望上面的这两个测试通过

最佳答案

正如一些评论所回应的那样,以这种方式构建测试可能是测试本身的设计缺陷,您应该考虑重新构建它们。但是,如果您想这样做并依赖于您正在使用的测试运行程序按字母(看似)顺序执行它们的事实,那么我建议如下。

与@Matthias 所说的类似,但对于您以后可能决定从该类继承的情况,我会做不同的事情。

from unittest import TestCase, main as unittest_main


class TestSimpleFoo(TestCase):
    foo = 'bar'

    def setUp(self):
        pass

    def test_a(self):
        self.assertEqual(self.__class__.foo, 'bar')
        self.__class__.foo = 'can'

    def test_f(self):
        self.assertEqual(self.__class__.foo, 'can')


if __name__ == '__main__':
    unittest_main()

此答案与您接受的@Matthias 答案之间的区别在于该类的显式声明与所述类引用的查找。

TestSimpleFoo vs self.__class__

我更喜欢动态性,因此我可以稍后继承测试并背靠背运行两个测试类,并且两者之间没有任何交叉。因为如果您选择从此类继承,显式命名类引用将导致两个测试类都针对该引用而不是它们各自的类运行。

关于python - 在unittest中的测试之间保持变量变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21447740/

相关文章:

Python。 K近邻TypeError : samples data type = 17 is not supported

python - 在 Python 中创建 n 个字符串

java - hibernate 中的分离对象

java - OpenJPA 连接错误

python - 如何使用多维 numpy 数组作为输入使用 Seaborn 绘制箱线图或 fiddle 图?

python - 使用sklearn特征提取时出现内存错误

c++ - bullseye 代码覆盖率浏览器没有所有的源文件?

ios - Xcodebuild 以不同语言运行应用程序单元测试

c# - 用最小起订量模拟 MediatR 3

java - 如何使复选框/ slider 持久化?