python接口自动化-数据依赖常用处理方式
一:通过执行上次的用例,获取依赖数据,在依赖的用例中替换依赖数据
获取思路
1)先获取上个 接口需要依赖的返回数据,
2)再用一个变量进行保存,
3)下个接口需要依赖就直接引用已保存数据的变量
二、通过反射完成或者全局字典来完成
setattr
# 业务流测试场景 import unittest # 定义一个全局变量 class EnvData: pass class SomeTestCase(unittest.TestCase): def test_01case(self): # 模拟接口返回需要传递的数据 res1 = 1 # 将需要传递的数据保存到全局变量类的属性中 EnvData.res1 = res1 # 也可以绑定到当前用例类中进行传递 self.__class__.res1 = res1 def test_02case(self): # 获取上一个接口传递的数据 # 通过全局变量类获取 res1 = EnvData.res1 # 通过类属性获取 res1 = self.__class__.res1 # 如果没有同名的对象属性也可以直接通过对象属性获取 res1 = self.res1 if __name__ == '__main__': unittest.main()
global_var ={} class A: pass
三、放入setup等测试套件中
# 单接口测试场景-1 import unittest def do_something(): """ 模拟表示前置接口 :return: """ return 3.14 # 定义一个全局变量类 class EnvData: pass class SomeTestCase(unittest.TestCase): @classmethod def setUpClass(cls) -> None: # 执行前置操作 data = do_something() # 将data绑定到全局变量类的类属性上 EnvData.data = data # 将data绑定到当前类的类属性上 cls.data = data def test_something(self): print('执行测试') # 获取前置方法中产生的数据 # 从全局变量中获取 print(EnvData.data) # 从当前用例的类属性中获取 print(self.__class__.data) # 如果当前用例对象没有同名对象属性,也可以直接从对象属性中获取 print(self.data) if __name__ == '__main__': unittest.main()
四、fixfure中完成
五、通过config.ini,通过configparser.ConfigParser()来读取
def set_config(section, key, value, file='pytest.ini'): """ 设置.ini配置文件的值 :param section: 配置所属的段 :param key: 需要设置值的键 :param value: 设置的值 :param file: 配置文件 :return: None """ is_file(file) conf = ConfigParser() conf.read(file, encoding='utf-8') conf.set(section, key, value) #此处注意一定要保存 with open(file, "w+") as f: conf.write(f) def get_config(section, key, file='pytest.ini'): """ 获取.ini配置文件信息 :param section: 配置所属的段 :param key: 需要设置值的键 :param file: 配置文件 :return: None """ is_file(file) conf = ConfigParser() conf.read(file, encoding='utf-8') value = conf.get(section, key) return value
六、pytest.order或者利用test_01_login命名的方式来调整顺序
七、pytest-dependency 直接写依赖那个测试用例