如何测试gRPC API?

问题描述 投票:0回答:8

我被分配测试 gRPC API(用 Golang 编写),但我不知道如何测试它,而且我在网上找不到任何此类测试的教程。我能想到的唯一方法是编写单元测试来测试方法本身,但我也想与客户端一起测试它。例如,我过去曾使用 JMeter 作为客户端来测试 REST API 来发送请求并验证响应数据。是否有通过客户端测试 gRPC API 的方法,或者单元测试是唯一的方法吗?

testing go rpc grpc
8个回答
16
投票

嗯,我正在寻找像 Postman 这样的客户端,然后我发现了 bloomrpc,它有助于调用 grpc 服务。但我不确定它是否符合您的目的,如果您正在寻找像 jmeter 这样的工具。


13
投票

如果您正在寻找像 Postman 这样的工具,还有 https://kreya.app。有了它,您可以调用 gRPC 服务并查看响应。

免责声明:我是 Kreya 的作者之一。


5
投票

既然您提到您之前已经使用 JMeter 进行过测试,我假设您正在寻找可以调用 gRPC 服务的外部测试客户端。 您可以使用多种方法。常见的有

通过这4个客户端,您可以动态调用gRPC服务。 但是,如果您正在寻找一款也可以进行负载测试的测试客户端,Fint 就是您所需要的。


4
投票

对于任何偶然发现此线程的人...... 之前的所有答案都已经提供了很好的工具。我们团队中使用了 BloomRPC & Kreya(个人选择)。

我要添加的是这个 gRPC 生态系统页面。它包含所有相关工具的精选列表。还有其他 GUI 测试工具(参见 GUI 部分),或者负载测试、基准测试工具(测试)

https://github.com/grpc-ecosystem/awesome-grpc

PS:说实话,我无法检查除了 BloomRPC 和 Kreya 之外的所有工具。


3
投票

Postman 刚刚发布了他们的 grpc 测试版:

https://blog.postman.com/postman-now-supports-grpc/

我刚刚测试了它,它对我来说非常有效👍🏻🙂

grpc postman


2
投票

可以有两种类型的测试。

  • 仅测试gRPC方法的实现,忽略网络

    this问题回答了这方面的测试。只需为 RPC 方法编写单元测试

  • 如果您还想测试实现和 gRPC 网络方面,那么您需要为要测试的服务编写 gRPC 客户端。

这里是有关创建 gRPC 客户端的代码片段

// Set up a connection to the server.
conn, err := grpc.Dial(address, grpc.WithInsecure())
// Execute RPC you want to test
r, err := c.SayHello(context.Background(), &pb.HelloRequest{Name: name})

检查此处以获取完整的代码示例


2
投票

您还可以尝试这个命令行工具,evans,用于测试 gRPC


0
投票

我在本文中找到了如何测试 gRPC 的答案:https://api-academy.hashnode.dev/how-to-test-grpc-apis

© www.soinside.com 2019 - 2024. All rights reserved.