首页 > 其他分享 >grpc自动化测试例子

grpc自动化测试例子

时间:2023-03-26 21:34:36浏览次数:39  
标签:测试 err grpc pb nil context 自动化 log

[chatgpt] gRPC 是一个高性能、开源、通用的 RPC 框架,支持多种编程语言。在进行自动化测试时,可以使用 gRPC 提供的测试工具和库来方便地进行测试。

以下是一个使用 golang 编写的 gRPC 自动化测试示例,包括服务端和客户端代码:

服务端代码:

package main

import (
	"context"
	"log"
	"net"

	"google.golang.org/grpc"
	"google.golang.org/grpc/reflection"

	pb "github.com/example/grpc-demo/helloworld"
)

type server struct{}

func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
	log.Printf("Received: %v", in.GetName())
	return &pb.HelloReply{Message: "Hello " + in.GetName()}, nil
}

func main() {
	lis, err := net.Listen("tcp", ":50051")
	if err != nil {
		log.Fatalf("failed to listen: %v", err)
	}
	s := grpc.NewServer()
	pb.RegisterGreeterServer(s, &server{})
	reflection.Register(s)
	if err := s.Serve(lis); err != nil {
		log.Fatalf("failed to serve: %v", err)
	}
}

  

客户端代码:

package main

import (
	"context"
	"log"
	"time"

	"google.golang.org/grpc"

	pb "github.com/example/grpc-demo/helloworld"
)

const (
	address = "localhost:50051"
	defaultName = "world"
)

func main() {
	conn, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithBlock())
	if err != nil {
		log.Fatalf("did not connect: %v", err)
	}
	defer conn.Close()
	c := pb.NewGreeterClient(conn)

	name := defaultName
	ctx, cancel := context.WithTimeout(context.Background(), time.Second)
	defer cancel()
	r, err := c.SayHello(ctx, &pb.HelloRequest{Name: name})
	if err != nil {
		log.Fatalf("could not greet: %v", err)
	}
	log.Printf("Greeting: %s", r.GetMessage())
}

  

该示例包含一个简单的 gRPC 服务端和客户端,客户端向服务端发送 "Hello" 请求,并接收响应。可以使用 golang 的 testing 框架编写测试用例,例如:

package main

import (
	"context"
	"testing"
	"time"

	"github.com/stretchr/testify/assert"
	"google.golang.org/grpc"

	pb "github.com/example/grpc-demo/helloworld"
)

func TestSayHello(t *testing.T) {
	conn, err := grpc.Dial(address, grpc.WithInsecure(), grpc.WithBlock())
	if err != nil {
		t.Fatalf("did not connect: %v", err)
	}
	defer conn.Close()
	c := pb.NewGreeterClient(conn)

	name := defaultName
	ctx, cancel := context.WithTimeout(context.Background(), time.Second)
	defer cancel()
	r, err := c.SayHello(ctx, &pb.HelloRequest{Name: name})
	if err != nil {
		t.Fatalf("could not greet: %v", err)
	}
	assert.Equal(t, "Hello "+name, r.GetMessage(), "response message is not correct")
}

  

该测试用例使用了第三方的断言库 testify/assert,可以方便地进行断言。测试用例使用了 gRPC 客户端来向服务端发送请求,并对响应结果进行断言,验证服务端的功能是否正常。

 

备注:这是ChatGPT3.5 对grpc怎么做自动化测试的回答,感觉挺智能的,记录一下

标签:测试,err,grpc,pb,nil,context,自动化,log
From: https://www.cnblogs.com/wuyepeng/p/17259601.html

相关文章

  • 拿到一个项目如何开展自动化测试,如何去做评估?
    1.确定测试目标和范围:首先需要明确项目的测试目标和范围,确定需要测试的功能和场景,以及测试的优先级和时间节点。2.评估自动化测试的可行性:根据项目的特点和需求,评估......
  • jmeter接口测试流程
    1.准备测试数据:根据接口的业务逻辑和参数要求,准备相应的测试数据。2.配置线程组:设置线程数量、循环次数、延迟时间等参数,模拟多个并发用户访问接口。3.添加HTTP请......
  • Go06-文件操作+单元测试+goroutine+channel+反射
    Go06-文件操作+单元测试+goroutine+channel+反射1.打开和关闭文件funcmain(){ //1打开文件。 //file可以称为file对象、file指针、file文件句柄。 file,err:=......
  • 软件测试--详细判断电话号码
    目录一、作业要求二、需求分析1、电话号码类型2、座机号码地点3、手机号码的种类常用运营商虚拟运营商号段物联网号段卫星电话号段其它号段4、手机地点5、国外号码6、测试......
  • 图片备注测试
    这是测试文字外链图片​​‍本地assets图片​​‍改备注​​‍改备注和标题​​......
  • 接口测试定义
    网络协议基于HTTP网络协议发送请求:URL:统一资源定位符,用于定位每一个指定的接口。请求下发的格式定义:网络协议://IP:PORT/path?args1=xxxx&args2=czxczchttps默认端......
  • 春季测试T2
    [春季测试2023]幂次题目描述小Ω在小学数学课上学到了“幂次”的概念:\(\foralla,b\in\N^+\),定义\(a^b\)为\(b\)个\(a\)相乘。她很好奇有多少正整数可以被......
  • 白盒测试
     1白盒测试2测数据库?软件测试怎么刷数据库早读 晚读。学习就是快乐。人生就是学习。活到老,学到老。学cad建筑制图。想学都能学会。我喜欢截图知识点,那就记住。 ......
  • 《渗透测试》WEB攻防-Python考点&CTF与CMS-SSTI模版注入&PYC反编译 2022 Day23
    1     1PY反编译-PYC编译文件反编译源码1.1pyc文件是py文件编译后生成的字节码文件(bytecode),pyc文件经过python解释器最终会生成机器码运行。因此pyc文......
  • go语言学习-grpc2:proto文件说明
    messageprotobuf中定义一个消息类型是通过关键字message字段指定。消息就是需要传输的数据格式的定义,它类似java中的class,go中的structmessageUser{stringusername=1......