• 自动化测试框架Pytest(五) —— 接口关联数据


    面试接口自动化问得最多的一个问题:涉及到关联接口如何去实现。

    当然是把关联接口需要的数据提取出来啊!

    jmeter可以用json提取器或者正则表达式去提取,学习pytest我们就自己写一个工具类吧~

    新建./commons/yaml_util.py:

    里面主要有2个方法,分别是写入yaml文件,读取yaml文件

    import os
    import yaml
    #获取项目根路径def get_object_path():    # print(os.getcwd())    return os.getcwd()
    #读取yaml文件def read_extract_yaml(key):    with open(get_object_path()+"/extract.yaml",encoding='utf-8') as f:        value = yaml.load(f,Loader=yaml.FullLoader)        return value[key]
    #写入yaml文件def write_extract_yaml(data):    with open(get_object_path()+"/extract.yaml",encoding='utf-8',mode='a') as f:        value = yaml.dump(data=data, stream=f, allow_unicode=True)        return value
    测试写入读取是否成功:
    from test5.commons.yaml_util import write_extract_yaml, read_extract_yaml
    
    class Test1:
        #测试方法必须以test开头    def test_01(self):        print('------------方法test_01------------')        write_extract_yaml({"token": "123456","password":"aabb"})
        def test_02(self):        print('------------方法test_02------------')        print(read_extract_yaml("token"))        print(read_extract_yaml("password"))

    执行用例可以看到数据读取成功,第一个用例的值可以给第二个用例使用

    yaml文件能正常生成数据

    看似完美,实际有个问题,多执行几次用例会发现yaml文件的数据会重复报错:

    解决重复报错最好的方式就是每次执行用例时清空之前的yaml文件。如何在每次执行时都执行清空操作?这里又要用到我们之前说过的夹具。

    更改yaml_util.py,新增一个方法,清空文件:

    import os
    import yaml
    #获取项目根路径def get_object_path():    # print(os.getcwd())    return os.getcwd()
    #读取yaml文件def read_extract_yaml(key):    with open(get_object_path()+"/extract.yaml",encoding='utf-8') as f:        value = yaml.load(f,Loader=yaml.FullLoader)        return value[key]
    #写入yaml文件def write_extract_yaml(data):    with open(get_object_path()+"/extract.yaml",encoding='utf-8',mode='a') as f:        value = yaml.dump(data=data, stream=f, allow_unicode=True)        return value
    #清空yaml文件def clear_extract_yaml():    with open(get_object_path()+"/extract.yaml",encoding='utf-8',mode='w') as f:        f.truncate()

    根目录添加夹具conftest.py,作用域是整个session,每执行一次main函数清空一次yaml文件​​​​​​​

    import pytest
    from test5.commons.yaml_util import clear_extract_yaml
    @pytest.fixture(scope="session",autouse=True)def clear_extract():    clear_extract_yaml()

    这下无论执行多少次用例,yaml文件也不会报数据重复的错误了。

    撒花~


    学习资源分享

    最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

    这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助…….

    如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入下方我的qq群大家一起讨论交流,里面也有各种软件测试资料和技术交流。

  • 相关阅读:
    面试官:如何实现多级缓存?
    高频面试题1,删除有序数组重复元素
    AWS-PatchAsgInstance自动化定时ASG组打补丁
    webpack5 之 基础构建打包
    Java配置39-搭建ELK服务器
    24.讲二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树
    32~python openpyxl 读取excel
    2022最新一线大厂Java八股文合集PDF版震撼开源,堪称史上最强
    SVN服务器迁移-Windows
    【C++】【Opencv】cv::GaussianBlur、cv::filter2D()函数详解和示例
  • 原文地址:https://blog.csdn.net/m0_58026506/article/details/126385793