Python WebSocket自动化测试:构建高效接口测试框架!

news2024/11/23 14:50:51

为了更高效地进行WebSocket接口的自动化测试,我们可以搭建一个专门的测试框架。本文将介绍如何使用Python构建一个高效的WebSocket接口测试框架,并重点关注以下四个方面的内容:运行测试文件封装、报告和日志的封装、数据驱动测试以及测试用例与测试数据的隔离。

01、运行测试文件封装

在构建WebSocket接口测试框架时,我们可以编写一个测试运行器来执行测试文件中的所有测试用例。下面是一个简单的测试运行器示例:

import pytest
def run_tests():
    pytest.main(["-s", "-v"])

在测试文件中,我们只需要调用run_tests()函数即可运行所有的测试用例。这样可以提高测试执行的统一性和可维护性。

01、报告和日志的封装

为了更好地了解测试结果,我们可以使用pytest框架提供的报告和日志功能。以下是一些常用的报告和日志插件:

pytest-html:生成详细的测试报告,包含测试结果和统计信息。
pytest-xdist:支持分布式执行测试用例,提高测试执行速度。
pytest-logger:记录测试执行过程中的日志信息,方便排查问题。

通过安装和配置这些插件,我们可以生成漂亮的测试报告,并记录测试执行过程中的日志,以便后续分析和排查。使用方法如下:

1. pytest-html

pytest-html插件用于生成详细的HTML测试报告。

安装pytest-html插件:

pip install pytest-html

使用方法:

在pytest配置文件中添加以下内容:

# pytest.ini
[pytest]
addopts = --html=report.html

此处将测试报告生成为report.html文件。

执行测试用例时,添加--html选项:

pytest --html=report.html

执行完毕后,将在当前目录下生成report.html文件,即测试报告。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:110685036

2. pytest-xdist

pytest-xdist插件用于支持分布式执行测试用例,提高测试执行速度。

安装pytest-xdist插件:

pip install pytest-xdist

使用方法:

执行以下命令:

pytest -n NUM

其中,NUM为指定的并发数量,表示同时运行的测试进程数。例如,pytest -n 3表示使用3个进程并发执行测试用例。

3. pytest-logger

pytest-logger插件用于记录测试执行过程中的日志信息。

安装pytest-logger插件:

pip install pytest-logger

使用方法:

在pytest配置文件中添加以下内容:

# pytest.ini
[pytest]
log_cli = true

此处设置log_cli为true,表示在命令行中显示日志信息。

执行测试用例时,将日志信息输出到文件:

pytest --log-file=log.txt

执行完毕后,将在当前目录下生成log.txt文件,即日志文件。

以上就是使用pytest-html、pytest-xdist和pytest-logger插件的基本方法。通过配置和命令行选项,你可以方便地生成测试报告、实现分布式测试以及记录日志信息,提高测试框架的可视化和可扩展性。

3. 数据驱动测试

WebSocket接口的测试常常需要使用不同的数据进行测试。为了提高代码的复用性和可维护性,我们可以使用数据驱动的测试方法。以下是一个使用pytest的数据驱动测试的示例:

import pytest
import websockets
import asyncio
@pytest.mark.parametrize("message", ["Hello", "WebSocket", "Test"])
@pytest.mark.asyncio
async def test_websocket_message(websocket, message):
    await websocket.send(message)
    received_message = await websocket.recv()
    assert received_message == message
# 执行测试用例
pytest.main(["-s", "-v"])

通过@pytest.mark.parametrize装饰器,我们可以将不同的测试数据传递给同一个测试用例,从而实现数据驱动的测试。

4. 测试用例与测试数据的隔离

为了更好地隔离测试用例和测试数据,提高代码的可读性和可维护性,我们可以将测试数据单独存放在一个文件或数据源中,并在测试用例中进行引用。以下是一个简单的示例:

import pytest
import websockets
import asyncio
import json
def load_test_data():
    with open("test_data.json", "r") as file:
        return json.load(file)
@pytest.fixture(scope="module")
def test_data():
    return load_test_data()
@pytest.mark.parametrize("data", test_data())
@pytest.mark.asyncio
async def test_websocket_message(websocket, data):
    message = data["message"]
    expected_response = data["expected_response"]
    await websocket.send(message)
    received_message = await websocket.recv()
    assert received_message == expected_response
# 执行测试用例
pytest.main(["-s", "-v"])

在上述示例中,我们使用load_test_data()函数从JSON文件中加载测试数据,并通过test_data()装饰器将测试数据传递给测试用例。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
 

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1068879.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据结构题型14-二叉树的遍历

文章目录 1、先序遍历2、中序遍历3、后序遍历5、非递归遍历5、层次遍历 参考博客: 二叉树遍历方法——前、中、后序遍历(图解) 1、先序遍历 2、中序遍历 3、后序遍历 5、非递归遍历 5、层次遍历

练[FBCTF2019]RCEService

[FBCTF2019]RCEService 文章目录 [FBCTF2019]RCEService掌握知识解题思路关键paylaod 掌握知识 ​ json字符串格式,命令失效(修改环境变量)–绝对路径使用linux命令,%0a绕过preg_match函数,代码审计 解题思路 打开题目链接,发现…

二维码智慧门牌管理系统:让城市管理更高效、更便捷

文章目录 前言一、二维码智慧门牌管理系统的特点二、二维码智慧门牌管理系统的应用三、二维码智慧门牌管理系统的开发解决方案 前言 随着城市化进程的加速,城市管理面临着越来越多的挑战。其中,门牌号码的管理问题一直困扰着城市管理部门。为了解决这个…

【排序算法】堆排序详解与实现

一、堆排序的思想 堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。它是通过堆(若不清楚什么是堆,可以看我前面的文章,有详细阐述)来进行选择数据&am…

投票礼物打赏流量主小程序开发

投票礼物打赏流量主小程序开发 投票功能:用户可以参与投票,选择自己支持的候选人或选项。礼物功能:用户可以给候选人或其他用户送礼物,以表示赞赏或支持。打赏功能:用户可以给候选人或其他用户打赏,以表示…

Transformer预测 | Pytorch实现基于Transformer的时间序列预测(含单步与多步实验)

文章目录 效果一览文章概述模型描述程序设计单步实验多步实验参考资料效果一览 文章概述 Transformer预测 | Pytorch实现基于Transformer的时间序列预测(含单步与多步实验) Transformer-singlestep.py 包含单步预测模型 Transformer-multistep.py 包含多步预测模型 这是单步预…

【kubernetes的三种网络】

kubernetes的三种网络 一、三种网络service网络(service是虚拟IP地址)pod网络(pod的IP地址 docker容器的IP)节点网络(网络服务器上的物理网卡IP) 二、其他网络flannel一、vxlan(隧道方案)1.定义2.优势3.工作…

软件定制开发的细节|网站搭建|APP小程序定制

软件定制开发的细节|网站搭建|APP小程序定制 在定制开发的过程中,一些小的细节往往能够影响到最终的产品质量和用户体验。下面我将为大家介绍一些软件定制开发的细节。 第一,明确需求。在定制开发之前,我们需要明确客户的需求和目标。只有明确…

C语言中常用的字符串处理函数(strlen、strcpy、strcat、strcmp)

文章目录 写在前面1. strlen1.1 函数介绍1.2 模拟实现 2. strcpy2.1 函数介绍2.2 模拟实现 3. strcat3.1 函数介绍3.2 模拟实现 4. strcmp4.1 函数介绍4.2 模拟实现 写在前面 本篇文章介绍了C语言中常用的字符串处理函数,包括strlen、strcpy、strcat和strcmp。文章…

Redis集群方案-主从复制-哨兵模式-分片集群

Redis集群方案 主从复制全量同步增量同步(slave重启或者后期数据变化) 哨兵模式服务状态监控哨兵选主规则 分片集群哈希槽 主从复制 单节点的Redis的并发能力是有上线的,要进一步提高redis的并发能力,就需要搭建主从集群&#xff…

第一节:vue3 配置路由

1.安装router插件npm install vue-router4或者yarn add vue-router4 2.新建router文件夹以及router里边的index.js:里边主要配置路由 import {createRouter,createWebHashHistory} from vue-router // 1.新的页面导入进来 import Home from ../view/Home.vue impor…

使用华为eNSP组网试验⑹-组建基于BGP的网络

BGP(Border Gateway Protocol -- 边界网关协议)是一种在自治系统之间动态交换路由信息、具有丰富的路由控制机制、稳定而安全的路由协议路由协议,一般部署在骨干(主要、核心)路由器。 BGP适用于大中型网络的组建,在很多企业当中都有应用。 一般情况下&am…

2023年化妆品级珠光材料随化妆品需求增加推动产品需求量[图]

珠光材料是通过特定工艺方法,在天然云母或人工合成等基材表面包覆一层或多层金属氧化物而制得的一种材料。在化妆品领域,珠光颜料常用于口红、眼影、指甲油、粉饼等化妆品的制造,以产品的闪亮度和吸引力,使其更加美观。 化妆品级…

java CPU 或者内存 异常排查

java CPU 或者内存 异常排查 提示:需要基础环境和配置上java-home CPU 或者内存 异常排查 java CPU 或者内存 异常排查前言一、java文件上传(Test.java)二、转换为class三、执行命令,启动文件四、使用top命令查看五、下载文件&…

【MATLAB源码-第44期】基于matlab的2*2MIMO-LDPC系统的误码率仿真。

操作环境: MATLAB 2022a 1、算法描述 2x2 MIMO(多输入多输出)和LDPC(低密度奇偶校验码)编码是在通信系统中常用的技术,它们通常用于提高无线通信系统的性能和可靠性。 1. 2x2 MIMO: 2x2 MIMO…

Micriosoft 365 和 Office 之间的对比

Micriosoft 365 以前也叫做 Office 365,2020 年微软官方将它改名为了 Microsoft 365。

MySQL Cluster 简介

文章目录 1.简介2.组成参考文献 1.简介 MySQL Cluster 是官方推出的基于 NDB(Network DataBase)存储引擎的高可用和可伸缩的分布式数据库系统。 以下是 MySQL NDB Cluster 的主要特点和能力: 高可用:MySQL Cluster 具有内置的高…

截胡高通,三星Exynos 2400率先登场:旗舰芯片定位。

今年 2 月,三星在全球发布了 GalaxyS23 系列,不同于过去的双处理器策略,Galaxy S23 系列全线搭载了采用台积电4nm 生产的高通骁龙 8 Gen 2,三星自家的 Exynos 2300 则直接轮空——被弃之不用。 但我们在之后的文章中就指出&#x…

物联网AI MicroPython传感器学习 之 WS2812 RGB点阵灯环

学物联网,来万物简单IoT物联网!! 一、产品简介 ws2812是一个集控制电路与发光电路于一体的智能外控LED光源。其外型与一个5050LED灯珠相同,每个元件即为一个像素点。像素点内部包含了智能数字接口数据锁存信号整形放大驱动电路&a…

基于vue框架的uniapp小程序开发发现了新大陆

项目场景: 在基于vue框架的uniapp小程序开发中,在页面跳转时,当前页路径带参数,在跳转页中接受数据除了用官方推荐的保留当前页面,跳转到应用内的某个页面,使用onLoad(option)接受数据,但是我发…