1. 同一个文件
方法1:使用全局变量
import unittest
bb = 0
class Test_1(unittest.TestCase):
def test_101(self):
global bb
bb = 33
print(f'in test101 bb={bb}')
def test_102(self):
print(f'in test102 bb={bb}')
class Test_2(unittest.TestCase):
def test_201(self):
print(f'in test202 bb={bb}')
if __name__ == '__main__':
unittest.main()
打印结果:
in test101 bb=33
in test102 bb=33
in test202 bb=33
方法2:使用静态方法
import unittest
class MyTest_1(unittest.TestCase):
def setUp(self) -> None:
pass
def tearDown(self) -> None:
pass
@staticmethod
def login(): # 定义静态方法
token = '123'
return token
def test_101(self):
token = self.login() # 测试前调用一下
print(f'in 101 token is {token}')
def test_102(self):
token = self.login()
print(f'in 102 token is {token}')
class MyTest_2(unittest.TestCase):
def setUp(self) -> None:
pass
def tearDown(self) -> None:
pass
def test_201(self):
token = MyTest_1.login() # 其他类调用
print(f'in 201 token is {token}')
if __name__ == '__main__':
unittest.main()
打印结果:
in 101 token is 123
in 102 token is 123
in 201 token is 123
2. 不同文件
方法1:新建一个文件,将f1.py产生的结果写入到文件中,f2.py再来读取这个文件中的值(也可以采用excel等其他文件格式)
f1.py
class Test_1(TestBase):
def test_1(self):
aa = 888888
with open('./1.txt', 'wt') as f:
f.write(str(aa))
print(f'in test1 aa={aa}')
f2.py
class Test_3(TestBase):
def test_3(self):
with open('./1.txt', 'rt') as ff:
data = ff.readlines()
print(f'in test3 data={str(data)}')
方法2:提取testbase,其他测试类继承该类
f1.py
import unittest
class TestBase(unittest.TestCase):
def setUp(self) -> None:
self.token = '123'
def tearDown(self) -> None:
pass
f2.py
from f1 import TestBase
import unittest
class MyTest_1(TestBase):
def test_101(self):
print(f'in 101 token is {self.token}')
def test_102(self):
print(f'in 102 token is {self.token}')
class MyTest_2(TestBase):
def test_201(self):
print(f'in 201 token is {self.token}')
if __name__ == '__main__':
unittest.main()
f3.py
from f1 import TestBase
import unittest
class MyTest_3(TestBase):
def test_301(self):
print(f'in 301 token is {self.token}')
if __name__ == '__main__':
unittest.main()
方法3:使用跨文件的全局变量
global.py
def _init():
global g_dict
g_dict = {}
def set_value(key, value):
g_dict[key] = value
def get_value(key, default='get_gl_error'):
try:
return g_dict[key]
except Exception as msg:
print(msg)
return
f1.py
import f1
import unittest
f1._init()
class MyTest_1(unittest.TestCase):
def setUp(self) -> None:
pass
def tearDown(self) -> None:
pass
def test_101(self):
f1.set_value('token', '123')
def test_102(self):
token = f1.get_value('token')
print(f'in 102 token is {token}')
class MyTest_2(unittest.TestCase):
def setUp(self) -> None:
pass
def tearDown(self) -> None:
pass
def test_201(self):
token = f1.get_value('token')
print(f'in 201 token is {token}')
if __name__ == '__main__':
unittest.main()
打印结果:
in 102 token is 123
in 201 token is 123
方法4:定义单例模式的实例变量
单例模式,只有一个实例,测试登录的时候,给这个实例添加一个实例变量,后续的接口要依赖登录的token,直接从实例变量中获取即可。
(设计模式有待学习)