手把手教你学会接口自动化系列十-将用例写在json中,持久化管理起来上

我们之前写的把url,登录都封装了,但是用例的数据怎么用其他文件管理起来,和代码分离呢?由次,我就行了json进行用例的管理。

从接口的角度我们分析,我们都知道接口请求有以下几方面:

url

method

headers

data

由次我将我的用例管理格式设置成下面的

{

"url": "/login",

"method": "GET",

"headers":

{"Content-Type":"application/x-www-form-urlencoded"},

"casedata":

[

[{"caseNo": "01"},{"caseName": "正常登录"},{"reqParam": {"username":"admin","password":"123456"}}],

[{"caseNo": "02"},{"caseName": "登录-用户名错误"},{"reqParam": {"username":"admin111","password":"123456"}}],

[{"caseNo": "03"},{"caseName": "登录-密码错误"},{"reqParam": {"username":"admin","password":"123456111"}}]

]







}

下来就是怎么读取json文件,为此我写了个方法单独读取json文件,代码如下:

​
# !/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2024/01

# @Author : Laopi

import json

def read_json_file(file_path):

with open(file_path, 'r',encoding='utf-8') as file:

data = json.load(file)

return data

​

​
# !/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2024/01

# @Author : laopi

import requests

from config.read_json_file import read_json_file

from config.setting import ConfigHandler

from tools.yamlControl import GetYamlData

baseUrl = GetYamlData(ConfigHandler.config_path).get_yaml_data()

url = baseUrl['host']+"/login"

jsonpath = (ConfigHandler.root_path+'/testdata/login.json')

# 读取JSON文件

headers = read_json_file(jsonpath)['headers']

data = read_json_file(jsonpath)['casedata'][0][2]['reqParam']

print(data)

# headers = GetYamlData(ConfigHandler.root_path+'/testdata/login.yaml').get_yaml_data()['headers']

# data=GetYamlData(ConfigHandler.root_path+'/testdata/login.yaml').get_yaml_data()['data']

# print(headers)

response = requests.post(url=url,

headers=headers,

data=data)

print(response.text)

​

如果想要执行异常的第二个用例只需要把

data = read_json_file(jsonpath)['casedata'][0][2]['reqParam']

修改为

data = read_json_file(jsonpath)['casedata'][1][2]['reqParam']

整体代码如下:

​
# !/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2024/01

# @Author : laopi

import requests

from config.read_json_file import read_json_file

from config.setting import ConfigHandler

from tools.yamlControl import GetYamlData

baseUrl = GetYamlData(ConfigHandler.config_path).get_yaml_data()

url = baseUrl['host']+"/login"

jsonpath = (ConfigHandler.root_path+'/testdata/login.json')

# 读取JSON文件

headers = read_json_file(jsonpath)['headers']

data = read_json_file(jsonpath)['casedata'][1][2]['reqParam']

print(data)

# headers = GetYamlData(ConfigHandler.root_path+'/testdata/login.yaml').get_yaml_data()['headers']

# data=GetYamlData(ConfigHandler.root_path+'/testdata/login.yaml').get_yaml_data()['data']

# print(headers)

response = requests.post(url=url,

headers=headers,

data=data)

print(response.text)

​

运行结果如下:

同样第三条用例,就把

data = read_json_file(jsonpath)['casedata'][1][2]['reqParam']

修改为

data = read_json_file(jsonpath)['casedata'][2][2]['reqParam']

整体代码如下:

​
# !/usr/bin/env python

# -*- coding: utf-8 -*-

# @Time : 2024/01

# @Author : laopi

import requests

from config.read_json_file import read_json_file

from config.setting import ConfigHandler

from tools.yamlControl import GetYamlData

baseUrl = GetYamlData(ConfigHandler.config_path).get_yaml_data()

url = baseUrl['host']+"/login"

jsonpath = (ConfigHandler.root_path+'/testdata/login.json')

# 读取JSON文件

headers = read_json_file(jsonpath)['headers']

data = read_json_file(jsonpath)['casedata'][2][2]['reqParam']

print(data)

# headers = GetYamlData(ConfigHandler.root_path+'/testdata/login.yaml').get_yaml_data()['headers']

# data=GetYamlData(ConfigHandler.root_path+'/testdata/login.yaml').get_yaml_data()['data']

# print(headers)

response = requests.post(url=url,

headers=headers,

data=data)

print(response.text)

​

运行结果如下:

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

软件测试老痞

你的支持,是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值