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

 

posted @ 2023-02-28 22:44  我是小菜鸡丫丫  阅读(504)  评论(0编辑  收藏  举报