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实现接口自动化测试并保存测试结果

介绍

  1. 用Python来做接口自动化测试的好处,我觉得就一点,访问http接口简单,一行代码就行;
  2. 代码不用写很多,可以把若干接口配置成JSON就行;
  3. Python解析之后,将访问结果等数据保存到excel中;

大致就上面3点,

实现

json配置(config.json)

{
    "service":"http://127.0.0.1:8080",
    "versionCode":"1",
    "apiList":[
        {
            "api":"/app/login",
            "name":"登录接口",
            "type":"POST",
            "desc":"登录之后产生的Token是之后接口的基础",
            "params":{
                "password": "123", "loginName": "test"
            }
        },
        {
            "api":"/app/reportInfo",
            "name":"上报信息",
            "type":"POST",
            "params":{
                "dyId": "", 
                "dyName": ""
            }
        }
    ]
}

里面的接口api和params信息等需要替换成自己需要测试的内容。
python实现

import requests
import json
import xlwt
import time

token = ""
headers = {"Content-Type": "application/json", "charset": "UTF-8"}
mTime = time.strftime('%Y年%m月%d日')
mWorkBook = xlwt.Workbook()
mWorkSheet = mWorkBook.add_sheet(mTime)

column = 0
row = 0

# xls error style excel错误样式
def errorStyle():
    font = xlwt.Font()
    # 字体类型
    font.name = 'name Times New Roman'
    # 字体颜色
    font.colour_index = 1

    # 设置背景颜色
    pattern = xlwt.Pattern()
    # 设置背景颜色的模式
    pattern.pattern = xlwt.Pattern.SOLID_PATTERN
    # 背景颜色
    pattern.pattern_fore_colour = 2

    myStyle = xlwt.XFStyle()
    myStyle.font = font
    myStyle.pattern = pattern  # 设置背景颜色
    return myStyle


# 读取config.json
def read_config():
    """"读取配置"""
    with open("./config/config.json",
              encoding='utf-8') as json_file:
        config = json.load(json_file)
    return config


# 遍历接口
def iterateApi():
    config = read_config()
    serviceAdr = config['service']
    for api in config['apiList']:
        url = serviceAdr + api['api']
        params = api['params']
        type = api['type']
        if type == "POST":
            post_json = requests.post(url=url, json=params, headers=headers)
        elif type == "GET":
            post_json = requests.get(url=url, json=params, headers=headers)
        print("reponse =  ", post_json.text)
        text = json.loads(post_json.text)
        getResult(api["name"], url, params, text)


def getResult(name,
              url,
              params,
              result={
                  'code': '-1',
                  'msg': '默认值',
                  'entity': ""
              }):
    global column
    if (column == 0):
        mWorkSheet.write(column, 0, "接口名")
        mWorkSheet.write(column, 1, "地址")
        mWorkSheet.write(column, 2, "参数")
        mWorkSheet.write(column, 3, "结果")
        mWorkSheet.write(column, 4, "服务器返回内容")

    column += 1
    if (result["code"] == "10000"):
        writeSheet(name, column, url, params, result)
        print("success, tip: ", result["msg"])
        entity = result["entity"]
        if (type(entity) is dict) and (result["entity"] !=
                                       None) and ("token" in result["entity"]):
            global token
            token = result["entity"]["token"]
            global headers
            headers["Cookie"] = "access_token=" + token
            print("token = ", token)
    else:
        print("fail, tip: ", result["msg"])
        writeSheet(name, column, url, params, result, True)


# 保存到excel
def writeSheet(name, column, url, params, result, error=False):
    if error is True:
        myStyle = errorStyle()
    else:
        myStyle = xlwt.XFStyle()
    # print("style = ", type(myStyle))
    mWorkSheet.write(column, 0, name, myStyle)
    mWorkSheet.write(column, 1, url, myStyle)
    mWorkSheet.write(column, 2, json.dumps(params,
                                           indent=2,
                                           ensure_ascii=False), myStyle)
    mWorkSheet.write(column, 3, result['msg'], myStyle)
    mWorkSheet.write(column, 4, json.dumps(result,
                                           indent=2,
                                           ensure_ascii=False), myStyle)


if __name__ == '__main__':
    iterateApi()
    mWorkBook.save(mTime + ".xls")

返回参数可以根据自己的接口内容修改。
这套代码只是作为一个参考,具体怎么实现,是需要根据自己需要的接口实现方式进行修改的。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-27 11:41:37  更:2022-04-27 11:42:55 
 
开发: 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年11日历 -2024/11/15 21:02:51-

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