基于RPC协议的接口自动化测试可以用Python语言实现

news2024/11/16 11:33:59

基于RPC协议的接口自动化测试可以用Python语言实现。下面是实现步骤:

1、安装依赖库,如protobuf、grpc。

2、编写.proto文件定义接口参数和返回值。

3、使用protoc编译.proto文件生成Python代码。

4、编写客户端代码调用远程接口进行测试。

具体实现步骤如下:

1、安装依赖库

在终端执行以下命令安装protobuf和grpc:

pip install protobuf grpcio

2、编写.proto文件

以定义一个简单的加法接口为例,创建一个名为math.proto的文件,输入以下内容:

syntax = "proto3";

package com.example;

service MathService {
  rpc Add(AddRequest) returns (AddReply) {}
}

message AddRequest {
  int32 a = 1;
  int32 b = 2;
}

message AddReply {
  int32 sum = 1;
}

其中,message定义了请求参数和返回值类型,service定义了一个接口,内部包含了一个Add方法,该方法接受一个AddRequest参数,并返回一个AddReply类型的结果。

3、使用protoc编译.proto文件生成Python代码

在终端中进入math.proto所在目录,执行以下命令将.proto文件编译生成Python代码:

python -m grpc_tools.protoc --proto_path=. --python_out=. --grpc_python_out=. math.proto

运行后会在当前目录下生成两个文件:math_pb2.py和math_pb2_grpc.py。

4、编写客户端代码进行测试

创建一个名为test_math.py的文件,输入以下内容:

import grpc
import math_pb2
import math_pb2_grpc

def test_add():
    with grpc.insecure_channel('localhost:50051') as channel:
        stub = math_pb2_grpc.MathServiceStub(channel)
        response = stub.Add(math_pb2.AddRequest(a=1, b=2))
    assert response.sum == 3

if __name__ == '__main__':
    test_add()

其中,test_add函数是用来测试Add接口的,使用grpc.insecure_channel连接到服务端,构造MathServiceStub对象,调用Add方法并传入参数,最后断言结果是否正确。

运行test_math.py即可进行测试,如果一切正常则会输出OK。


粉丝福利

这份资料,对于【软件测试】的朋友来说应该是最全面最完整的备战资料,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,这些资料也陪伴了我走过最艰难的路,希望也能帮助到你!!!

在这里插入图片描述

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

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

相关文章

C++【红黑树封装mapset】

文章目录 前言(一) 修改原红黑树(1)逐步修改并调试运行(2)红黑树的迭代器(3)最后一步最重要的 二、源代码压缩包 前言 我们在开始之前,首先要明白一点,前面我…

一文带你了解MySQL之事务隔离级别和MVCC

目录 一、数据准备二、事务隔离级别2.1 事务并发执行遇到的问题2.2 SQL标准中的四种隔离级别2.3 MySQL中支持的四种隔离级别 三、MVCC3.1 版本链3.2 ReadView3.2.1 READ COMMITTED3.2.2 REPEATABLE READ 3.3 MVCC小结 四、关于purge五、总结 一、数据准备 为了我们学习的顺利进…

一篇文章搞懂CMake(gcc、g++、cmake解释)

一篇文章搞懂CMake (gcc、g、cmake解释) 这里写目录标题 一篇文章搞懂CMake (gcc、g、cmake解释)gccgcmake1. CMake 流程如何使用cmake?简单的CMake.txt文件 参考 gcc gcc命令来自英文词组“GNU Compiler Collection”…

4.C++多线程-- unique_lock(类模板)

1.unique_lock 1. unique_lock<mutex> myUniLock(myMutex); 完全可以取代lock_guard 2. unique_lock 也可以使用----std::adopt_lock 3.使用adopt_lock&#xff0c;之前要先使用lock. 4.std::chrono::milliseconds my_sleepTime(20000)//20000毫秒 std::this_thread:…

运维小白必学篇之基础篇第十一集:系统进程实验

系统进程实验 实验作业&#xff1a; 1、利用top命令查看当前系统进程&#xff0c;要求没5秒刷新一次&#xff0c;分别按照CPU使用率&#xff0c;内存使用量&#xff0c;CPU使用时间&#xff0c;PID分别排序一次 每5秒刷新一次&#xff1a;top -d 5 按照CPU使用率排序&#xf…

【python】如何入门python?

文章目录 前言一、为什么学习Python&#xff1f;二、学习Python的前置条件三、入门Python的步骤3.1 安装Python3.2 安装Python开发环境3.3 学习Python基础语法3.4 编写你的第一个Python程序3.5 学习Python的高级特性3.6 使用Python库和框架 四、Python入门的资源五、常见的Pyth…

allure报告中如何让测试步骤更清晰

一、allure step测试用例步骤说明 allure step编写测试用例有两种方式 1、with allure.step()用在测试用例中 公共方法代码&#xff1a; # common_fucntion.py import allure import pytest from common.tools.log_util import LoggerrunlogLogger().get_log流程性的用例&a…

【FMC129】 基于JESD204B接口的8通道125MSPS 16位AD采集FMC子卡

板卡概述 FMC129是一款8通道125MHz采样率16位AD采集FMC子卡&#xff0c;符合VITA57.1规范&#xff0c;可以作为一个理想的IO模块耦合至FPGA前端&#xff0c;8通道AD通过高带宽的FMC连接器&#xff08;HPC&#xff09;连接至FPGA从而大大降低了系统信号延迟。 该板卡支持板上可编…

git commit之前,没有pull最新代码,导致无法push代码如何解决?——git三板斧

一、报错&#xff1a; 如果在 git commit 之前没有 pull 最新代码&#xff0c;再进行 push 操作可能会出现冲突&#xff0c;导致无法 push 代码。此时&#xff0c;git 会提示类似以下的错误信息&#xff1a; error: failed to push some refs to gitgithub.com:username/repo…

OSSIM进行主机漏洞扫描(03)

OSSIM进行主机漏洞扫描方式 按照如图选择&#xff0c;ENVIRONMENT–SCAN JOBS–NEW SCAN JOB进入新增页面 其中各选项含义如下 Job Name:扫描任务名称。 Select Sensor:扫描的嗅探器。 Profile:扫描的类型&#xff0c;包括Deep- Non destructive Full and Slow scan(深入)、D…

【完整版】2023二级建造师《建筑实务》真题答案解析(2天考3科)

2023二级建造师考试将在6月3日、4日举行&#xff0c;2023二建《市政实务》考试时间&#xff08;2天考3科&#xff09;&#xff1a;6月4日 9:00-12:00&#xff0c; 考后甘建二将及时发布2023年二建市政实务真题及答案解析&#xff0c;敬请关注 2天考3科地区&#xff1a;四川、山…

1个月1000家店,库迪起飞

5月30日最新消息&#xff0c;库迪咖啡第3000家门店在北京开业。 从2022年10月到4月&#xff0c;半年开了2000家。4月到5月更夸张&#xff0c;1个月开了一千家店。 这就是库迪速度&#xff0c;线下疯狂扩张&#xff0c;线上也没闲着。 今天在抖音本地生活热销榜&#xff0c;大…

华为OD机试题【导师请吃火锅】【2023 B卷 100分】

文章目录 &#x1f3af; 前言&#x1f3af; 题目描述&#x1f3af; 解题思路&#x1f4d9; Python实现代码&#x1f4d7; Java实现代码&#x1f4d8; C语言实现&#xff1a; &#x1f3af; 前言 &#x1f3c6; 《华为机试真题》专栏含2023年牛客网面经、华为面经试题、华为OD机…

5 从Win32过度到MFC

文章目录 配置设置建立MFC工程的三部曲1.建立CWinApp 类的派生类2.重写CWinApp3.定义CWinApp派生类的全局变量全部代码 添加对话框资源创建窗口类继承CDialog 导入资源文件修改资源文件ID加载资源文件 全部代码 配置设置 建立MFC工程的三部曲 1.建立CWinApp 类的派生类 class…

四、初探[ElasticSearch]集群架构原理与搜索技术

目录 一、浅析Elasticsearch架构原理1.Elasticsearch的节点类型1.1 Master节点1.2DataNode节点 二、分片和副本机制2.1分片2.2副本2.3指定分片、副本数量2.4查看分片、主分片、副本分片 三、Elasticsearch工作流程3.1Elasticsearch文档写入原理3.2Elasticsearch检索原理 四、El…

Java开发手册中为什么要求三目运算符必须要注意类型对齐

场景 java开发手册中对于三目运算符的使用要求如下: 【强制】三目运算符 condition? 表达式 1 : 表达式 2 中&#xff0c;高度注意表达式 1 和 2 在类型对齐时&#xff0c; 可能抛出因自动拆箱导致的 NPE 异常。 说明&#xff1a;以下两种场景会触发类型对齐的拆箱操作&am…

华为路由器 NAT 配置

拓扑图 静态 NAT 静态地址转换是指外部网络和内部网络之间的地址映射关系由配置确定&#xff0c;该方式适用于内部网络与外部网络之间存在固定访问需求的组网环境。静态地址转换支持双向互访&#xff1a;内网用户可以主动访问外网&#xff0c;外网用户也可以主动访问内网。 一…

2023国际管理会计教育联盟发展论坛在沪成功召开

2023年5月7日&#xff0c;由教育部中外人文交流中心、国际管理会计教育联盟&#xff08;下称“联盟”&#xff09;主办&#xff0c;中国商业会计学会、上海交通大学安泰经济与管理学院承办的2023国际管理会计教育联盟发展论坛&#xff08;下称“发展论坛”&#xff09;在上海成…

第4章:SpringMVC的域对象共享数据

1、使用ServletAPI向request域对象共享数据 ①控制器 Controller public class HelloController {RequestMapping("/test")public String index(HttpServletRequest request){request.setAttribute("test","test666");return "index"…

避坑之网上下单的手机流量卡为什么老是失败!

最近有一些小伙伴们反应&#xff1a;在网上下单的手机流量卡&#xff0c;经常提示下单失败&#xff0c;不是这问题就是那问题的。 对于小伙伴们的诉求&#xff0c;小编向来是来者不拒的。今天就为大家整理一下下单失败的四大原因。 失败原因一&#xff1a;下单信息填写错误 下…