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

1123 篇文章 44 订阅
648 篇文章 11 订阅

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

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

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
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值