selenium - unittest中的全局变量

1. 在setupclass中使用cls.***设置变量,不同用例之间无法实时共享参数变动

class Login(unittest.TestCase):
    """各testcase之间,不共享变量的值"""
    """可以在setup时设置全局变量,不同的case之间共享这个变量"""
    @classmethod
    def setUpClass(cls):
        cls.a = 123

    def test_1(self):
        self.a = 333
        print(f'test_1中:{self.a}')  # 打印:test_1中:333

    def test_2(self):
        print(f'test_2中:{self.a}')  # 打印:test_2中:123

 

2. 在setupclass中使用globals()["***"]设置变量,不同用例之间可以实时共享参数变动

class Login(unittest.TestCase):
    """不同用例之间,可以实时共享参数变动"""
    @classmethod
    def setUpClass(cls):
        globals()['aaa'] = 123

    def test_1(self):
        globals()['aaa'] = 333
        print(f'test_1中:{globals()["aaa"]}')  # 打印:test_1中:333

    def test_2(self):
        print(f'test_2中:{globals()["aaa"]}')  # 打印:test_2中:333

 

3. 在setclass中使用className.***设置变量,不同用例之间可以实时共享参数变动

class Login(unittest.TestCase):

    @classmethod
    def setUpClass(cls):
        Login.a = 123

    def test_1(self):
        Login.a = 333
        print(f'test_1中:{Login.a}')  # 打印:test_1中:333

    def test_2(self):
        print(f'test_2中:{Login.a}')  # 打印:test_2中:333

 

4. 在setupcalss之前设置变量

  1)是全局变量,但在测试用例中,无法修改全局变量的值

  2)即使通过globals()["***"]修改,和a也不是一个变量

class Login(unittest.TestCase):
    a = 123

    @classmethod
    def setUpClass(cls):
        globals()["a"] = 9

    def test_0(self):
        print(f'test_0中:{self.a}')  # 打印:test_0中:123
        print(f'test_0中:{globals()["a"]}')  # 打印:test_0中:9

    def test_1(self):
        a = 333
        print(f'test_1中:{a}')  # 打印:test_1中:333

    def test_2(self):
        print(f'test_2中:{self.a}')  # 打印:test_2中:123

 

上一篇:python中的unittest库


下一篇:python自动化unittest yaml使用过程解析