接口测试 问一个关于 unittest 的问题

busgade · 2018年11月20日 · 最后由 busgade 回复于 2018年11月20日 · 1340 次阅读

我现在有 3 个用例,如下

我现在需要一个变量,它在第一个用例里值是 2,在第二个用例里它的值是 4,第三个是 6,也就是累加 2,
我怎么去设置这样一个变量,是在 setup 里定义吗,求大神们指教

最佳回复
class TestNum(unittest.TestCase):
    num = 0
    def setUp(self):
        TestNum.num+=2
    def test_1(self):
        print(self.num)
共收到 6 条回复 时间 点赞

可以设置一个全局变量:

import unittest

COUNT = 0

class TestPara(unittest.TestCase):

    def setUp(self):
        pass

    def tearDown(self):
        pass

    def test_01(self):
        global COUNT
        COUNT += 2
        print(COUNT)

    def test_02(self):
        global COUNT
        COUNT += 2
        print(COUNT)

    def test_03(self):
        global COUNT
        COUNT += 2
        print(COUNT)


if __name__ == '__main__':
    unittest.main()

分别输出: 2,4,6

class mytest(unittest.TestCase):
    def setUp(self):
        self.para = 0
        print('setup: %s' % self.para)

    def test01(self):
        self.para = 2
        print('t1: %s' % self.para)

    def test02(self):
        self.para = 4
        print('t2: %s' % self.para)

    def test03(self):
        self.para = 6
        print('t3: %s' % self.para)

    def tearDown(self):
        pass

结果:

...

Ran 3 tests in 0.000s

OK
setup: 0
t1: 2
setup: 0
t2: 4
setup: 0
t3: 6

class TestNum(unittest.TestCase):
    num = 0
    def setUp(self):
        TestNum.num+=2
    def test_1(self):
        print(self.num)
YueChen 回复

学习了,还是这个方法最简单

class TestPara(unittest.TestCase):
    def add2(func):
        def wrapper(self):
                if not hasattr(self.__class__,'c'): setattr(self.__class__,'c',0)
                setattr(self.__class__,'c',getattr(self.__class__,'c')+2)
                func(self)
        return wrapper

    @add2
    def test_01(self):
        print(self.__class__.c) # 2


    def test_02(self):
        print(self.__class__.c) # 2

    @add2
    def test_03(self):
        print(self.__class__.c) # 4


if __name__ == '__main__':
    unittest.main()

我想这样可能最大的解决继承的问题,他的孩子可能都能用,但我没试

YueChen 回复

非常完美,我就想要这种效果,其他大神们的答案也很感谢

busgade 关闭了讨论 11月20日 18:26
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册