python,pytest接口自动化,excel中一个请求头参数,运行用例时读取不完整,是格式问题吗?
引用GPT作答:
在进行接口自动化测试时,使用Excel作为测试用例文件,有时会出现参数读取不完整的问题。这通常与Excel中参数的格式有关。
一种常见的情况是,Excel的单元格中的数据被默认格式化为日期或数字,而不是字符串。当你将这些数据读取到测试用例中时,可能会出现截断或数据类型错误的情况。
为了解决这个问题,你可以在读取Excel时,使用特定的方式来处理参数。以下是一些可能的解决方案:
str()
函数将参数转换为字符串类型:import openpyxl
# 打开Excel文件
workbook = openpyxl.load_workbook('test_cases.xlsx')
# 选择相应的工作表
worksheet = workbook['Sheet1']
# 读取参数,并将其转换为字符串类型
header = str(worksheet.cell(row=2, column=2).value)
这些方法可以确保在读取Excel中的参数时,能够获取到完整的参数内容。请根据你自己的具体情况选择适合的解决方案。
希望对你有所帮助!如有任何进一步的问题,请随时提问
在自动化测试中经常将测试数据放入到Excel中,为了操作简便,将一些操作封装到readExcel类中
# -*- coding:utf-8 -*-
# author_='ting.chun'
# date:2020/10/22 19:05
import xlrd
from xlutils import copy
class ReadExcel:
'''
此类专门用于读取Excel
'''
#__workbook用于存放excel文件的对象
__workbook=None
__sheet=None
__print=False #用于开启全局打印
def __init__(self,file_name,sheet_name):
'''
类的初始化方法,在类似初始化的时候被调用
:param file_name: excel的文件名
:param sheet_name: excel中需要访问的sheet名
'''
self.file_name=file_name
ReadExcel.__workbook=xlrd.open_workbook(file_name)
#根据sheet名称获取sheet内容
ReadExcel.__sheet=ReadExcel.__workbook.sheet_by_name(sheet_name)
def get_number_of_rows(self):
'''
获取表格中内容的最大行数
:return:__number_of_row
'''
__rows_number=self.__sheet.nrows
if ReadExcel.__print is True:
print(__rows_number)
return __rows_number
def get_number_of_cols(self):
'''
获取表格中内容最大的列数
:return: __number_of_cols
'''
__cols_number=self.__sheet.ncols
if ReadExcel.__print is True:
print(__cols_number)
return __cols_number
def get_value_of_row(self,row_index):
"""
获取某一行的所有值构成列表
:param row_index: 行号
:return: 行内容组成的列表
"""
__row_value=self.__sheet.row_values(row_index)
if ReadExcel.__print is True:
print(__row_value)
return __row_value
def get_value_of_col(self, col_index):
"""
获取某一列的所有值构成的列表
:param col_index: 列号
:return: 列中内容组成的列表
"""
__col_value = self.__sheet.col_values(col_index)
if ReadExcel.__print is True:
print(__col_value)
return __col_value
def get_value_of_cell(self, row_index, col_index):
"""
获取某一个单元格中的值
:param row_index: 行号
:param col_index: 列号
:return: 单元格中的内容
"""
# 第row_index行 col_index列是内容
__cell_value = self.__sheet.cell(row_index, col_index).value
if ReadExcel.__print is True:
print(__cell_value)
return __cell_value
def write(self,sheet,row,col,value):
new_workbook=copy.copy(ReadExcel.__workbook)
w_sheet=new_workbook.get_sheet(sheet)
w_sheet.write(row,col,value)
new_workbook.save(self.file_name) #保存文件
if __name__=='__main__':
filename=r'..\config\api_info.xls'
el=ReadExcel(filename,'Sheet1')
el.write(0,2,1,"你好吗")