接口测试框架——第六篇-读Excel封装方法

news/2024/7/24 2:51:25 标签: 测试, json, python

谢谢@小麦苹果的提醒,才发现我借口测试少写了一个文件,今天给大家补上:

common->service->excel_case_data.py
# coding: utf-8

import json
import sys
import logging
import setting
import requests
from common.module import excel_module
from common.module import requests_module
from common.module import environment_module

sys.path.append("..")

class ExcelData():

    def __init__(self):

        self.url = ''
        self.method = ''
        self.data_send = ''
        self.expect_res = ''
        self.data = ''
        self.case_url = ''
        self.case_input = ''
        self.content_type = ''

    def get_case_data(self, file_name, sheet_index=0, row_id=0, data=None, **kwargs):
        """
        1、获取对应id的行的内容
        2、获取url
        3、获取请求方式
        4、获取请求参数,并进行转码
        5、获取预期结果
        6、获取string类型的response
        :param file_name: xlsx文件名
        :param sheet_index: sheet索引
        :param row_id: 行索引
        :param data: 不用Excel表里的数据,自己传
        :param kwargs: 替换excel表里的某个key的value
        :return: expect_res, actual_res
        """
        # 读取Excel
        excel_handle = excel_module.ReadExcel(file_name)
        # 获取指定sheet
        sheet = excel_handle.get_sheet_by_index(sheet_index)
        # 读取指定行
        case_data_list = excel_handle.get_row_values(sheet, row_id)
        # 获取第row_id行第2列的数据
        path = case_data_list[1]
        print "path: ", path
        self.get_url(path)
        print self.get_url(path)
        # ID、Path、Request、Input、Expect、content-type、Remark
        # 获取发送方式(Request)
        self.method = case_data_list[2]
        self.data_send = case_data_list[3]
        # 字符串转字典
        if self.data_send != '':
            self.data = json.loads(self.data_send, encoding='utf-8')

        logging.info(self.data_send)
        if kwargs is not None:
            for i in kwargs:
                for j in self.data:
                    # 如果传参key和发送内容key相同,则替换Excel表中的对应key的value
                    if i == j:
                        self.data[j] = kwargs[i]

        if data is not None:
            self.data = data

        expect_res = self.get_expect_data()
        # 遍历传参,如果有cookie字段则将该cookie赋值给access_token
        access_token = ''
        for i in kwargs:
            if i == 'cookie':
                access_token = kwargs[i]
        if (access_token.strip() == ''):
            actual_res = self.get_actual_data()
        else:
            actual_res = self.get_actual_data(access_token=access_token)

        return expect_res, actual_res

    def get_case_input(self, file_name, sheet_index=0, row_id=0):
        """
        获取输入数据
        :param file_name: 文件路径
        :param sheet_index: sheet索引
        :param row_id: 行索引
        :return: Excel表中的传入数据
        """
        excel_handle = excel_module.ReadExcel(file_name)
        sheet = excel_handle.get_sheet_by_index(sheet_index)
        case_data = excel_handle.get_row_values(sheet, row_id)
        self.data = case_data[3]
        return self.data

    def get_url(self, path):
        pathStr = str(path)
        self.url = environment_module.Environment_module().get_env_url('login') + path

    def get_expect_data(self):
        logging.debug("=============Expect============" + self.expect_res)
        return self.expect_res.encode('utf-8')

    def get_actual_data(self, **kwargs):
        # headers = setting.REQUEST_HEADER
        # headers['Content-Type'] = self.content_type['Content-Type']
        # for i in kwargs:
        #     if i == "access_token":
        #         headers['Cookies'] = kwargs[i]
        actual_res_handle = requests_module.GetResponse(self.url, method=self.method)
        actual_url = actual_res_handle.get_response(data=self.data)
        res_analysis = requests_module.AnalysisResponse(actual_url)
        actual_res = res_analysis.Str_Content
        cookies = requests.utils.dict_from_cookiejar(res_analysis.Cookies)
        # logging.debug(u"===============data==============") + json.dumps(self.data)
        logging.debug((u"===========实际返回的数据为:%s============") % actual_res)
        return actual_res, cookies

读取excel文件的方法。

微信公众号搜索“自动化测试实战”或扫描下方二维码添加关注~~~

转载于:https://www.cnblogs.com/captainmeng/p/7845672.html


http://www.niftyadmin.cn/n/660694.html

相关文章

关于Swing中JFrame等顶级容器的层次还有设置背景的方式

资料来自:http://blog.csdn.net/qq_32006373/article/details/49659129 http://yuncode.net/code/c_5196327caac3917 在做一个Java大作业,做了一个登录界面后觉得太单调,于是想说加个背景。先是直接弄了个ImageIcon,然后改成Image…

升级 webpack 到 4.x 版本

升级 webpack 到 4.x 版本 说明 webpack 4 可以零配置启动,也支持通过配置文件进行更细致的配置,相比于上一个版本,配置已经简化了很多 webpack 4 引入了 mode 用来设置开发环境,同时也可以简化配置项,不同的 mode 会…

mongoDB 入门使用

MongoDB 入门使用 说明 MongoDB 是一个基于分布式文件存储的数据库,目的是为 WEB 应用提供可扩展的高性能的数据存储解决方案,它支持的数据结构非常松散,是类似 json 的 bson 格式,因此可以存储比较复杂的数据类型。 1. 安装 查看…

yum初识

yum仓库中的元数据文件:primary.xml.gz所有RPM包的列表;依赖关系;每个RPM安装生成的文件列表;filelists.xml.gz当前仓库中所有RPM包的所有文件列表;other.xml.gz额外信息,RPM包的修改日志;repom…

D3.js 学习 - 0 - SVG 基础回顾

D3.js 学习 - 0 - SVG 基础回顾 说明 D3 并没有一如一种新的视觉展现形式,图形方面的描述都是来源自 web 标准:HTML、SVG、CSS 图表仅仅是内部有一些形状的矩形,而D3提供的是一种让你通过操作图标或者你自己定义的图形来表达你想要展示数据的…

Python:网络爬虫相当利器

网络爬虫,又称为网页蜘蛛(WebSpider),非常形象的一个名字。如果你把整个互联网想象成类似于蜘蛛网一样的构造,那么我们这只爬虫,就是要在上边爬来爬去,顺便获得我们需要的资源。我们之所以能够通…

D3.js 学习 - 1 - D3基本使用(d3-selection 选择集)

D3.js 学习 - 1 - D3基本使用 (d3-selection 选择集) D3 简介 D3 是一个 Javascript 库,用于创建数据可视化图形,全称 Data-Driven Documents 也就是数据驱动文档,文档指的就是基于 web 的文档,代表可以在…

Python中的条件选择和循环语句

一.条件选择语句 Python中条件选择语句的关键字为:if 、elif 、else这三个。其基本形式如下: if condition:block elif condition:block ... else:block 其中elif和else语句块是可选的。对于if和elif只有condition为True时,该分支语句才执行。…