面试接口自动化问得最多的一个问题:涉及到关联接口如何去实现。
当然是把关联接口需要的数据提取出来啊!
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群大家一起讨论交流,里面也有各种软件测试资料和技术交流。