首页 > 其他分享 >从excel读数据的格式

从excel读数据的格式

时间:2023-08-04 12:12:12浏览次数:31  
标签:__ get excel 读数据 key 格式 data row

问题:从excel中读取的数据应是什么格式呢?

      1pytest中需要参数化时,需要的[(valuea,valueb)(valuex,valuey)]------------- 列表内是元祖

import pytest

def add(x, y):
    return x + y

@pytest.mark.parametrize("x, y, expected", [
    (1, 1, 2),
    (2, 3, 5),
    (-1, 1, 0),
])
def test_add(x, y, expected):
    result = add(x, y)
    assert result == expected

       结论:从上面例子看出,需要准备的数据的格式【(指定列值1,指定列值2),(指定列值1,指定列值2)】

        2 当传递 预期结果 请求体 这些参数key时,excel要根据key给出对应的value值------列表内是字典

def get_data(*args):#["a",'b']
for one in args: print("one:",one)
#one: ['a', 'b'] def get_key(*keys):#"x","y"
dict = {} for key in keys: dict[key]="value" 

return dict # {'x': 'value', 'y': 'value'}

if __name__ == '__main__':
get_data(["a",'b'])
d=get_key("x","y")

print(d)

代码示例

第一步:读excel表 需要两个方法一个[(),()];另一个[{},{}]

import xlrd
import json
from configs.configs import HOST
from utils.md5 import get_md5
# 在创建excel时,将登录接口的返回结果 粘贴到excel时需要 “只粘贴文本”
# 将excel 实例化
def get_excel_data(*keys):
    excel_data=[]# [{值},{值}]

    wookbook=xlrd.open_workbook('D:/python-pro/py0803/data/test_case.xls')
    # 通过名字读取sheet值
    sheet=wookbook.sheet_by_name('Sheet1')
    # 获得标题存在header中
    header = sheet.row_values(0)
    # ['url', 'title', 'method', 'body', 'expect'] 也就是row=0 第0行的值,标题
    # 获得列表的行总数
    nrows=sheet.nrows
    # print(nrows)# 3 ,其中 标题一行,数据两行
    # 循环读取每行的数据
    for i in range(1,nrows):

        # 每行都是一个字典 data_dict 注意这里是全部列的数据
        data_dict_row=dict(zip(sheet.row_values(0),sheet.row_values(i)))
        # 将包含\n换行符的字符串做处理
        for key in data_dict_row: # 遍历全部的单元格内的值
            value=data_dict_row[key]
            if isinstance(value,str): #是否是字符串?是的话,做处理
              data_dict_row[key]=value.replace('\n','').replace("\\",'')
        # 根据传入的参数 筛选出目标列 放到一个新的字典中
        row_data = {}
        for key in keys:
            if key in header: #  当传参是excel标题没有的时 不做处理
                if key == 'url': # 如果是url 需要拼
                    row_data[key]=f"{HOST}{data_dict_row['url']}"
                elif key == 'body': # 请求体 需要psw处理md5

                    temp = eval(data_dict_row['body'])# 转字符串为字典
                    temp['password']=get_md5(temp['password'])
                    row_data[key]=temp
                else:
                    row_data[key]=data_dict_row[key]

        excel_data.append(row_data)

    return excel_data
def get_excel_lis(*keys):
    excel_lis_dic=get_excel_data(*keys)

    exc_list_list=[]
    for one in excel_lis_dic:# 遍历列表的第一个字典
        excel_col_value= []  # 定义一个存放 每行 列值的地方
        for value in one.values():  # 从字典取出对应的值
            excel_col_value.append(value) # 將value放到数组中
        exc_list_list.append(tuple(excel_col_value))
    return exc_list_list

if __name__ == '__main__':
    # d=get_excel_data("method","url","body","expect")
    dd=get_excel_lis("method","url","body","expect")
    print(dd)

第二步  登录方法

# D:\python-pro\py0803\libs\login.py
# md5 加密
import json

import requests
from utils.read_excel import get_excel_data



def get_login(method,url,data):


    resp=getattr(requests,method.lower())(url,data)
    resp_dic=eval(resp.text.replace('false', 'False'))  # 从字符转字典

    return resp_dic
if __name__ == '__main__':
    for one in get_excel_data("method","url","body"):
      d=get_login(one['method'],one['url'],one['body'])
      print(d['msg'])

第三步: pytest  断言

# D:\python-pro\py0803\libs\login.py
# 比较 请求的结果和 excel中预期的结果
import pytest
from libs.login import get_login
from utils.read_excel import get_excel_lis
import pdb

class TestLogin:
    @pytest.mark.parametrize('method,url,body,expect',
                             get_excel_lis("method","url","body","expect"))
    def test_real_exp(self,method,url,body,expect):
        real = get_login(method,url,body)["msg"]
        print(real)

        exp = eval(expect)['msg']
        print(exp)

        assert real == exp
if __name__ == '__main__':
    pytest.main(['-vs'])

 

标签:__,get,excel,读数据,key,格式,data,row
From: https://www.cnblogs.com/haha1988/p/17605547.html

相关文章

  • 数据格式的处理 echarts数据改为 Table表格格式的数据
      前景后端返回的echarts展示数据格式,既要展示echarts又要展示table表格,echarts的数据格式为下面{xData:['Mon','Tue','Wed','Thu','Fri','Sat','Sun'],yData1:[10,52,200,334,390,330,220],yData2:......
  • C#格式化字符串
     字符串格式String.Format和WriteLine都遵守同样的格式化规则。格式化的格式如下:"{N[,M][:formatString]}",arg1,...argN,在这个格式中: 1)N是从0开始的整数,表示要格式化的参数的个数.2)M是一个可选的整数,表示格式化后的参数所占的宽度,如果M是负数,则左对齐,如果M是......
  • 读excel测试用例;登录;做pytest 请求
    1.从excel中读数据 返回【{字典}{字典}】;当传参数时,可以获得对应单元格内容importxlrdimportjsonfromconfigs.configsimportHOSTfromutils.md5importget_md5#在创建excel时,将登录接口的返回结果粘贴到excel时需要“只粘贴文本”#将excel实例化defget_exce......
  • 无涯教程-Perl - 格式化
    Perl使用称为“formats”的模板来输出内容。要使用Perl的格式函数,必须先定义一种格式,然后才能使用该格式写入格式化的数据。定义格式以下是定义Perl格式的语法-formatFormatName=fieldlinevalue_one,value_two,value_threefieldlinevalue_one,value_two.这里的For......
  • Excel分类后数字类型的内容值后面变为0
    背景在工作中经常遇到从日志或者其他地方拷贝过来的文本,里面使用其他分隔符进行分割。然而,使用Excel的分列功能进行分列后,发现数字类型的数值后面变为0。有时候我们就是需要原先的数值,该怎么办呢?比如,有如下的数据,以竖线|作为分割符。|员工编号|销售量|商品单价|销售额|20180......
  • 《Ext详解与实践》节选:自定义单元格的显示格式
    有时候,需要在Grid中显示一个链接,或根据数字的大小显示不同的颜色,又或者使用固定格式显示记录编号等,这就需要自定义单元格的显示格式。在Ext的Grid可以很容易的实现自定义单元格的显示格式。在定义Grid的ColumnModel的时候,在需要自定义显示格式的列中加入参数renderer,该参数指向一个......
  • Excel中文本型数字转换为数值型数字的方法
    背景工作中经常遇到需要将Excel中的内容进行求和或者其他计算,但是由于格式为文本,无法进行计算和求和。单元格的左上角都有绿色小三角,且用自动求和公式计算无法计算结果,显示为0,说明单元格格式为文本。1、直接将文本转化成数字需要转换的数据,左上角会出现黄色感叹号,点击,并选择......
  • excel递归读取目录并输出
    添加依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> ......
  • Excel中Hyperlink函数的使用
    Hyperlink函数是将文本形式的链接转换为超链接。调用格式:=HYPERLINK(链接,标题)或者:=HYPERLINK(链接)具体可参考Hyperlink函数Microsoft官方文档视频演示:......
  • 全国各乡镇的边界数据,json格式适配echarts;
    湖南省的数据现有,联系我获取(免费、帮我看一下小程序);其他省份可通过联系我用脚本获取(要手动输入验证码),或者网站获取(tips:每个区县需要一个个手动下载,且每个下载需要输入验证码):https://www.poi86.com/ ......