python接口自动化-数据依赖常用处理方式
一:通过执行上次的用例,获取依赖数据,在依赖的用例中替换依赖数据
获取思路
1)先获取上个 接口需要依赖的返回数据,
2)再用一个变量进行保存,
3)下个接口需要依赖就直接引用已保存数据的变量
二、通过反射完成或者全局字典来完成
setattr
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | # 业务流测试场景 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() |
1 2 3 | global_var = {} class A: pass |
三、放入setup等测试套件中
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | # 单接口测试场景-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()来读取
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | 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 直接写依赖那个测试用例
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?