IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python-接口自动化01 -> 正文阅读

[Python知识库]python-接口自动化01


我只不过是一只边学边写笔记的测试同学~
如有错误之处,还请大佬们指正。
大家共同学习,共同进步吧~


首先,本文excel中case涉及的字段以及顺序为:在这里插入图片描述

  1. 创建Base包;封装base_request请求方法
import requests

class BaseRequests:
    #1-1:封装发送post方法;
    def send_post(self, url, data,  header=None):
        res = requests.post(url=url, data=data, headers=header)
        return res

    #1-1:封装发送get方法;
    def send_get(self, url, data, header=None):
        res = requests.post(url=url, params=data, headers=header)
        return res

    #1-1:封装请求的主方法;
    def run_main(self, method, url, data,  header=None):
        if method =='get':
            res = self.send_get(url, data, header)
        else:
            res = self.send_post(url, data, header)
        return res
base_request = BaseRequests()
  1. 创建Util包;封装获取excel中数据的各种方法;(前提需要有一个Case包用来存放excel的用例,本文使用的是testcase.xlsx)
import openpyxl
import os
base_path = os.getcwd()  #当前路径
path = os.path.abspath(os.path.dirname(os.getcwd()))  #上级路径

"""
1.加载excel信息     ——load_excel
2.加载excel中所有sheet信息     ——get_sheet_data
3.获取行数      ——get_rows
4.获取某一行的信息      ——get_rows_value
5.获取某一列的数据      ——get_columns_value
6.获取行号      ——get_rows_number
7.获取某一个单元格的内容       ——get_cell_value
8.获取excel里面的所有的数据(也就是最终的用例)     ——get_excel_data
9.写入数据
"""

class GetExcel:
    #加载excel: 需要路径,告知哪里的excel
    def load_excel(self):
        excel = openpyxl.load_workbook(path+'/Case/testcase.xlsx')
        return excel

    #加载excel中所有sheet信息;需要给个下标,告知是哪一个sheet,默认为第一张excel
    def get_sheet_data(self, index=None):
        sheet_name = self.load_excel().sheetnames
        if index == None:
            index = 0
        data = self.load_excel()[sheet_name[index]]  #获取excel中sheet的数
        return data

    #获取行数
    def get_rows(self):
        data = self.get_sheet_data().max_row   #max_row 表示总行数
        return data

    #获取某一行的所有内容,那么就需要传递一个行数的参数
    def get_rows_value(self, row):
        row_list = []   #每一行的数据都是一个列表;所有先定义一个空列表
        for i in self.get_sheet_data()[row]:  #通过行数 遍历循环excel的sheet中的数据
            row_list.append(i.value)    #然后添加到首先定义好的空列表中
        return row_list

    #获取某一列的所有内容;那么就需要传递一个列的参数
    def get_columns_value(self, key=None):
        column_list = []
        if key == None:     #如果列的key是空的,那么就默认获取A列数据
            key = 'A'
        column_list_data =self.get_sheet_data()[key] #通过 列  遍历循环excel的sheet中的数据
        for i in column_list_data:
            column_list.append(i.value)
        return column_list

    #获取行号,如果要指定获取哪一行,那就需要传递一个参数以便告知,此用例中 也就可以传递一个case_id
    def get_row_number(self, case_id):
        num = 1
        cols_data =self.get_columns_value()  #首先获取某一行所有内容
        for col_data in cols_data: # 遍历循环每一行的数据,如果遍历出来的某个字段 = case_id 就返回
            if case_id == col_data:
                return num
            num +=1
        return num

    #获取某一个单元格的内容; 此时就需要传递 行 和列 俩个参数
    def get_cell_value(self, rows, cols):
        data = self.get_sheet_data().cell(row=rows, column=cols).value
        return data

    #获取excel里面的所有的数据
    def get_excel_data(self):
        data_list = []
        for i in range(self.get_rows()):
            data_list.append(self.get_rows_value(i+2))
        return data_list

    #写入数据;要知道写入的行,列,以及数值
    def write_excel_data(self, rows, cols, value):
        wb = self.load_excel()  #加载excel
        wr = wb.active  #获取sheet对应对象
        wr.cell(rows, cols, value)
        wb.save(path + '/Case/testcase.xlse')

excel_data = GetExcel()

3.创建Run包;主要是run_main主程序运行

import os
base_path = os.getcwd()  #当前路径
path = os.path.abspath(os.path.dirname(os.getcwd()))  #上级路径
from Util.get_excel import excel_data

class RunMain:
    def run_main(self):
        rows = excel_data.get_rows()
        for i in range(rows):
            data = excel_data.get_rows_value(i+2)
            print(data)

4.使用ini文件做公共配置;创建Config包;创建server.ini文件

[server]
host=https://xx.xxxx.net
phone=xxxx
pwd=xxxxxx
is_run=3

5.此时需要读取server.ini文件中配置的信息;于是在Util文件中,封装get_server.py

import configparser
import os
base_path = os.getcwd()  #当前路径
path = os.path.abspath(os.path.dirname(os.getcwd()))  #上级路径

class GetServer:
    def load_ini(self):
        file_path = path +'/Config/server.ini'  #读取ini文件的路径
        cf = configparser.ConfigParser()
        cf.read(file_path, encoding='utf-8-sig')
        return cf

    def get_value(self, key, section=None):
        if section == None:
            section = 'server'
        cf = self.load_ini()
        try:
            data = cf.get(section, key)
        except Exception:
            print("没有获取到值")
            data = None
        return data

server_data = GetServer()

6.此时;在Base(base_request)中;将通过get_server.py获取到的host与url进行拼接;此时base_request.py整体如下:

import requests
from Util.get_server import server_data

class BaseRequests:
    #1-1:封装发送post方法;
    def send_post(self, url, data,  header=None):
        res = requests.post(url=url, data=data, headers=header)
        return res

    #1-1:封装发送get方法;
    def send_get(self, url, data, header=None):
        res = requests.post(url=url, params=data, headers=header)
        return res

    #1-1:封装请求的主方法;
    def run_main(self, method, url, data,  header=None):

        #通过封装读取server配置后,拼接url
        base_url = server_data.get_value('host') #获取host
        if 'http' not in url:   #如果原来url中没有http,那么新的url = host+url
            url = base_url + url

        if method =='get':
            res = self.send_get(url, data, header)
        else:
            res = self.send_post(url, data, header)
        return res
base_request = BaseRequests()

7.进一步完善Run(run_main.py);引入excel中的数据;具体如下:

import os
from Util.get_header import get_header
base_path = os.getcwd()  #当前路径
path = os.path.abspath(os.path.dirname(os.getcwd()))  #上级路径
from Util.get_excel import excel_data
from Base.base_request import base_request

class RunMain:
    def run_main(self):
        rows = excel_data.get_rows()
        for i in range(rows):
            header = None
            data = excel_data.get_rows_value(i+2)
            is_run = data[2] #是否执行
            if is_run == 'yes':
                method = data[6]
                url = data[5]
                data1 = data[7]
                is_header = data[9]
                if is_header == 'yes':
                    header = get_header()
                res = base_request.run_main(method, url, data1, header).json()
                print(res)

第一部分完结;待更新第二部分……
此时,目录结构为:
Test为项目名称
Base(base_request.py)
Case(testcase.xlsx)
Config(server.ini)
Run(runmain.py)
Util(get_excel.py;get_server.py)

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:12:00  更:2021-08-09 10:13:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 13:53:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码