为了账号安全,请及时绑定邮箱和手机立即绑定

在类之间使用相同的变量和持续的单元测试

在类之间使用相同的变量和持续的单元测试

慕森王 2022-06-02 14:34:05
我有一半希望有人将此标记为重复,但如果是,我找不到相关问题。我有一个情况,我有 2 个测试类,其中 ClassA 需要设置 x,而 ClassB 重用设置 x,但还有一个额外的步骤 y。import my_module as mclass 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)        passclass 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(),但这只是意味着我global在每个测试类中也需要大量语句,而且这似乎也不是正确的“pythoninc”做事方式。我还尝试将所有测试放在同一个类中,因此他们从 共享设置,然后作为 的一部分ClassA调用,但是我的测试无法运行。m.complete_function()test3在这种特殊情况下,进行两次设置和拆卸可能不是很大的开销,但我也想找出“正确”的方法以供将来参考。
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

很简单:将通用代码分解出来,使其位于一个单独的函数中,然后self从每个方法中调用它(如果适合您的情况,可以使用作为参数和稍微不同的配置选项)setUp()。这样可以避免重复定义。

如果你还想重用你创建的状态,你需要一个共享命名空间中的变量来存储创建的状态。通常这将是一个单例,附加在模块级别或一些常见的超类上;但您也可以设置一些注册表对象来保存引用,这样您就可以同时拥有多个实例。但是,根据我的经验,每个测试通常都会进行自己的设置,即使这意味着重复工作,以确保“夹具”没有被早期测试无意中修改。


查看完整回答
反对 回复 2022-06-02
  • 1 回答
  • 0 关注
  • 131 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号