如何将从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()
我想通过上面的两个测试
我喜欢你自己的答案,因为它很简单,但是如果你想保持不同的单元测试:
显然unittest使用TestCase的新实例运行单独的测试。好吧,只需将对象绑定到除了自身之外的其他对象。例如:
您可能也对setUpClass和tearDownClass感兴趣: https://docs.python.org/3/library/unittest.html#setupclass-and-teardownclass
还要注意单元测试的执行顺序: https://docs.python.org/2/library/unittest.html#unittest.TestLoader.sortTestMethodsUsing
无法解决;因此最终使用多个不带
test_
前缀的函数将其破解:正如一些评论所回应的,以这种方式构造测试可能是测试本身的设计缺陷,您应该考虑重新构造它们。但是,如果您想这样做,并且依赖于您正在使用的测试运行程序按字母顺序(看似)执行它们,那么我建议您执行以下操作。
类似于@Matthias所说的,但是我会做一件不同的事情,在这种情况下,你可能会决定在以后继承类。
这个答案和您接受的@Matthias的答案的区别在于,类的显式声明与所述类引用的查找。
我更喜欢dynamicness,这样我可以在以后继承测试并背靠背地运行这两个测试类,而不会在这两个类之间交叉。因为如果选择从该类继承,显式命名类引用将导致两个测试类针对该引用而不是各自的类运行。
相关问题 更多 >
编程相关推荐