在 类 之间使用相同的变量并继续进行单元测试
Using the same variables and continuing unittests between classes
我希望有人将此标记为重复,但如果是,我找不到相关问题。
我有一个情况,我有 2 个测试 classes,其中 ClassA 需要设置 x,ClassB 重用设置 x,但还有一个额外的步骤 y。
import my_module as m
class TestClassA(unittest.TestCase):
def setUp()
self.a = 1
self.b = 2
self.c = 3
self.d = m.initialiase_function(self.a, self.b, self.c)
def test1(self)
pass
def test2(self)
pass
class TestClassB(unittest.TestCase):
def setUp():
self.a = 1
self.b = 2
self.c = 3
self.d = m.initialise_function(self.a, self.b, self.c)
m.complete_function(self.c)
def test3(self):
pass
def test4(self):
pass
我试过使用 setUpModule()
,但这只意味着我在每个测试 classes 中也需要大量 global
语句,但事实并非如此似乎也是正确的“pythoninc”做事方式。
我还尝试将所有测试放在同一个 class 中,因此他们共享 ClassA
的设置,然后调用 m.complete_function()
作为 test3
的一部分,但是那么我的测试不会 运行。
在这个特定的实例中,进行两次设置和拆卸可能不是很大的开销,但我也想找出 "correct" 的方法以供将来参考。
很简单:分解出公共代码,使其位于单独的函数中,然后从每个 setUp()
方法。这避免了重复定义。
如果您还想重用您创建的状态,您需要在某个共享命名空间中的某个变量可以存储创建的状态。通常这将是一个单例,附加到模块级别或一些公共超类;但您也可以设置一些注册表对象来保存引用,这样您就可以同时拥有多个实例。 但是, 根据我的经验,每个测试通常都会进行自己的设置,即使这意味着重复工作,以确保 "fixture" 没有被早期测试无意中修改。
我希望有人将此标记为重复,但如果是,我找不到相关问题。
我有一个情况,我有 2 个测试 classes,其中 ClassA 需要设置 x,ClassB 重用设置 x,但还有一个额外的步骤 y。
import my_module as m
class TestClassA(unittest.TestCase):
def setUp()
self.a = 1
self.b = 2
self.c = 3
self.d = m.initialiase_function(self.a, self.b, self.c)
def test1(self)
pass
def test2(self)
pass
class TestClassB(unittest.TestCase):
def setUp():
self.a = 1
self.b = 2
self.c = 3
self.d = m.initialise_function(self.a, self.b, self.c)
m.complete_function(self.c)
def test3(self):
pass
def test4(self):
pass
我试过使用 setUpModule()
,但这只意味着我在每个测试 classes 中也需要大量 global
语句,但事实并非如此似乎也是正确的“pythoninc”做事方式。
我还尝试将所有测试放在同一个 class 中,因此他们共享 ClassA
的设置,然后调用 m.complete_function()
作为 test3
的一部分,但是那么我的测试不会 运行。
在这个特定的实例中,进行两次设置和拆卸可能不是很大的开销,但我也想找出 "correct" 的方法以供将来参考。
很简单:分解出公共代码,使其位于单独的函数中,然后从每个 setUp()
方法。这避免了重复定义。
如果您还想重用您创建的状态,您需要在某个共享命名空间中的某个变量可以存储创建的状态。通常这将是一个单例,附加到模块级别或一些公共超类;但您也可以设置一些注册表对象来保存引用,这样您就可以同时拥有多个实例。 但是, 根据我的经验,每个测试通常都会进行自己的设置,即使这意味着重复工作,以确保 "fixture" 没有被早期测试无意中修改。