python+requests+unittest+excel_接口自动化测试 unittest+request+excel(踩‘坑’)

本文档描述了在使用Python的requests库进行接口自动化测试时遇到的JSON解析错误问题。问题源于从Excel读取的参数是字符串而非字典。解决方案是使用json.loads()将字符串转换为字典格式。此外,还提到了Excel参数内容必须使用双引号的注意事项。
摘要由CSDN通过智能技术生成

通过运行主函数,返回的参数,报json解析错误

正常的返回参数,应该如图

造成这个原因的是:

python从excel中解析出来的数据类型不是字典,是字符串,所以无法传递给requests当做请求参数

需用用json.loads()转成字典格式,然后进行传参

对python从Excel中解析出来的数据类型进行测试一波

#!/usr/bin/env python3

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

# __author__: hunter

import xlrd

import json

import requests

data = xlrd.open_workbook(‘D:/hunter_/interfaceTest/interface/tool/demo2.xlsx‘)

sheet = data.sheet_by_index(0)

url = sheet.cell_value(1, 5)

data1 = sheet.cell_value(1, 9)

#data2 = json.loads(data1)

print(‘从Excel中提取出来的params为:‘, data1)

print(‘从Excel中提取出来的params的数据类型为:‘, type(data1))

#print(type(data2))

结果:可以看到结果是字符串类型

加入json.load进行转换:转成字典类型

主函数进行修改:

#!/usr/bin/env python3

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

# __author__: hunter

from conn.run_demo import RunMain

from interface.tool.handle_excel import *

import json

class RunTestCase:

def __init__(self):

self.Runmain = RunMain() # 实例化调用get/post请求基类

self.data = HandleExcel() # 实例化操作Excel文件类

def go_run(self):

rows_count = self.data.get_rows() # 获取Excel行数

for i in range(1, rows_count): # 利用行数进行迭代处理每个接口

url = self.data.get_value(i, get_url()) # 循环获取URL的值

print(url)

print(‘=====‘)

method = self.data.get_value(i, get_mothod()) # 循环获取method的值

data = json.loads(self.data.get_value(i, get_params())) # 循环获取请求参数

print(data)

print(‘=====‘)

is_run = self.data.get_value(i, get_priority()) # 获取是否运行,即判断Excel中priority是不是为“high"

if is_run == ‘high‘:

res = self.Runmain.run_main(url, method, data) # 调用主函数

print(res)

print(‘=====‘)

if __name__ == ‘__main__‘:

run = RunTestCase()

run.go_run()

其中还有一个坑就是:

通过Excel进行传参,数据内容,格式只能用双引号,不然就会报错:

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值