Python搭建接口测试自动化框架(二)

本文介绍了如何使用Python搭建接口测试自动化框架,包括目录结构、工具包、基础包、pytest测试用例代码和测试执行过程。通过封装操作Excel、HTTP请求等方法,实现了从Excel读取测试数据并进行接口测试,简化了测试工作流程。
摘要由CSDN通过智能技术生成

从今天开始,继续这个系列,一步一步的,搭建一个自己理想的自动化测试框架。 关于第一部分,可以戳这里(链接

目录结构再定义

由于距离上一篇已经有一段时间了,项目的目录结构也发生了一些变化,这里再重新定义下目录结构

框架结构

 

代码结构

                                                                         

 

Excel 文件结构

 

代码详细解析

1.工具包 tools

封装操作 excel 方法 excel_operation.py

import xlrd
from config.config import PROJECT_PATH


class OperationExcel:
    def __init__(self, file_name=None, sheet_id=0):
        if file_name:
            self.file_name = PROJECT_PATH + '/data/' + file_name
            self.sheet_id = sheet_id
        else:
            try:
                self.file_name = PROJECT_PATH + '/data/case.xlsx'
                self.sheet_id = 0
            except FileExistsError:
                raise FileExistsError("the default testcase file not found")
        self.book = self.get_book()
        self.data = self.get_data()

    # 获取工作簿
    def get_book(self):
        book = xlrd.open_workbook(self.file_name)
        return book

    # 获取 sheets 的内容
    def get_data(self):
        book = self.book
        tables = book.sheets()[self.sheet_id]
        return tables

    # 获取所有 sheet 的名字
    def get_sheet_name(self):
        book = self.book
        return book.sheet_names()

    # 获取所有 sheets
    def get_sheets(self):
        book = self.book
        sheets = book.sheets()
        return sheets

    # 获取某个单元格的内容
    def get_cell_value(self, row, col):
        return self.data.cell_value(row, col)

    # 获取单元格的行数
    def get_lines(self):
        tables = self.data
        case_rows = tables.nrows - 1
        return case_rows

    # 获取某一列的内容
    def get_cols_data(self, col_id=None):
        if col_id is not None:
            cols = self.data.col_values(col_id)
        else:
            cols = self.data.col_values(0)
        return cols

    # 获取某一行的内容
    def get_rows_data(self, row_id=None):
        if row_id is not None:
            rows = self.data.row_values(row_id)
        else:
            rows = self.data.row_values(0)
        return rows

    # 获取某个 caseid 对应的行号
    def get_row_num(self, case_id):
        num = 0
        cols_data = self.get_cols_data()
        for col_data in cols_data:
            if case_id in col_data:
                return num
            num += 1

使用 xlrd 库来操作 excel,同时,该类只做最底层的 excel 数据提取,不做任何业务相关的判断。后面会陆续增加 json,yaml 等数据结构的操作工具。

中间数据操作层 operate_data.py

from config.config import ExcelConfData


class OperateExcelData(object):
    def get_caseid(self):
        return ExcelConfData.caseid

    def get_url(self):
        return ExcelC
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值