手把手教你学会接口自动化系列十七-其他模块接口的自动化测试,Excel篇

本文介绍了在编写Python脚本处理API接口测试时,如何根据不同请求头类型(如`application/json`和`application/x-www-form-urlencoded`)加载和转换数据,以及如何在登录请求中处理Token的问题。作者提供了具体的代码片段和逻辑判断示例。

我们在编写其他模块的时候,发现和登录的还是有一些区别的

第一个区别,登录用的请求头为:

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

但是添加线索模块用的是:

{"Content-Type":"application/json"}

那我们这个时候就需要对不同的请求头参数做一判断和区别:

遇到{"Content-Type":"application/x-www-form-urlencoded"}时,可以如下:

data = json.loads(sheet.cell(i,3).value)

遇到请求体{"Content-Type":"application/json"}的呢?

如下:

data = json.dumps(sheet.cell(i,3).value)

所以我们基于这个可以写一个逻辑判断

if headers['Content-Type'] == 'application/json':

data = json.dumps(json.loads(sheet.cell(i, 3).value))

else:

data = json.loads(sheet.cell(i, 3).value)

第二个区别:登录不需要token,但是其他的需要token,这个时候,我们还得调用一次get_token

headers.update({'Admin-Token': cookie})

最后代码如下:

# !/usr/bin/env python

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

# @Time : 2024/01

# @Author : Laopi

import json

import os



import demjson as demjson

import openpyxl

import requests



from config.read_json_file import read_json_file

from config.setting import ConfigHandler

from demo import tokenCreate

from demo.tokenCreate import get_token

from tools.yamlControl import GetYamlData

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

root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

case_path = os.path.join(root_path, 'testdata')

os.chdir(case_path) # 修改工作路径

workbook = openpyxl.load_workbook('接口测试用例.xlsx') # 返回一个workbook数据类型的值

workbook._active_sheet_index =1

sheet =workbook.active

cookie = tokenCreate.get_token()

url = baseUrl['host']+sheet.cell(row=2,column=2).value



print(url)

print(sheet.max_row) #获取有多少行





for i in range(6,sheet.max_row+1):

headers = json.loads(sheet.cell(i, 2).value)

headers.update({'Admin-Token': cookie})

if headers['Content-Type'] == 'application/json':

data = json.dumps(json.loads(sheet.cell(i, 3).value))

else:

data = json.loads(sheet.cell(i, 3).value)



print(data)

response1 = requests.post(url=url, headers=headers, data=data)

print(response1.json())





下来我们改造demo4:

如下:

# !/usr/bin/env python

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

# @Time : 2024/01

# @Author : Laopi

import json

import os



import openpyxl

import requests



from config.setting import ConfigHandler

from demo import tokenCreate

from tools.yamlControl import GetYamlData





'''

调用登录获取token

'''

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

root_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

case_path = os.path.join(root_path, 'testdata')

os.chdir(case_path) # 修改工作路径

workbook = openpyxl.load_workbook('接口测试用例.xlsx') # 返回一个workbook数据类型的值

workbook._active_sheet_index =2

sheet =workbook.active

cookie = tokenCreate.get_token()

url = baseUrl['host']+sheet.cell(row=2,column=2).value

print(sheet.max_row) #获取有多少行

for i in range(6,sheet.max_row+1):

headers = json.loads(sheet.cell(i, 2).value)

headers.update({'Admin-Token': cookie})

print(headers)

if headers['Content-Type'] == 'application/json':

data = json.dumps(json.loads(sheet.cell(i, 3).value))

else:

data = json.loads(sheet.cell(i, 3).value)

print(data)

response1 = requests.post(url=url, headers=headers, data=data)

print(response1.json())



# headers={"Content-Type":"application/x-www-form-urlencoded","Admin-Token":cookie}

# data = {"type":"1","isDefault": "0","name": "123","data": {"leads_name":{"condition":"contains","value":"收11","formType":"text","name":"leads_name"}}}

# response1 = requests.post(url=url,headers=headers,data=data)

# print(response1.json())

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

软件测试老痞

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

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

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

打赏作者

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

抵扣说明:

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

余额充值