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 直接写依赖那个测试用例

浙公网安备 33010602011771号