【问题标题】:How to test gRPC APIs?如何测试 gRPC API?
【发布时间】:2018-05-25 15:44:53
【问题描述】:

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

【问题讨论】:

    标签: testing go rpc grpc


    【解决方案1】:

    可以有两种类型的测试。

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

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

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

    这里是关于创建 gRPC 客户端的代码 sn-p

    // 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})
    

    查看here 获取完整的代码示例

    【讨论】:

    • 如果我没有遗漏什么,使用 gRPC 客户端实现的测试完全是手动的。这意味着你必须手动启动服务器然后你可以运行客户端来测试它,对吧?
    • @BrickYang 是的,您部分正确。但通常服务器在测试用例之前启动(例如在init方法中)并在所有测试用例完成后停止。
    【解决方案2】:

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

    【讨论】:

    • 知道如何在 BloomRPC 中包装文本吗?有时字符串会变得很大,如果没有文字换行会很笨拙。
    • 有像 JMeter 这样的 grcp 工具吗?
    【解决方案3】:

    你也可以试试这个command line tool,evans,来测试 gRPC

    【讨论】:

    • 尽量避免只提供链接的答案,提供一个例子或一些上下文。
    【解决方案4】:

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

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

    【讨论】:

      【解决方案5】:

      既然您提到您之前使用 JMeter 进行过测试,我假设您正在寻找可以调用 gRPC 服务的外部测试客户端。您可以使用几个。常见的是

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-21
        • 2020-09-15
        • 2017-06-25
        • 2021-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-17
        相关资源
        最近更新 更多