接口测试 - python - 接口依赖(上个用例的结果在下个用例之间使用)
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 default
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,直接从实例变量中获取即可。
(设计模式有待学习)