【问题标题】:Passing ID of websocket connection between testcases (Common Test) , Erlang在测试用例(通用测试)、Erlang 之间传递 websocket 连接的 ID
【发布时间】:2020-06-10 11:35:10
【问题描述】:

谁能帮帮我? 我有基于 websockets 的服务器。 我想使用通用测试 (CT) 在测试用例之间传递连接 ID 并为所有测试用例仅使用一个连接来测试 API。 测试用例关闭连接。

如果可能的话,请给我一个例子。

【问题讨论】:

    标签: http websocket erlang cowboy gun


    【解决方案1】:

    如果您将测试用例组织成组和(测试)套件中的组,您可以使用函数init_per_suite/1end_per_suite/1init_per_group/2end_per_group/2init_per_testcase/2end_per_test_case/2 来创建并销毁您需要的所有资源,并在必要的时间内使它们保持活力。有一个Config2 可以使用init 传递,它旨在用于运行时 配置。

    如果您无法将信息传递给您的测试用例,您可以将它们存储在您在正确的 init_per_XXX 级别生成并在相应的 end_per_XXX 销毁的已注册服务器中(一个对几个请求作出反应的简单循环)。

    learnyousomeerlang的例子

    【讨论】:

    • 我有创建websocket连接的功能:
      open_ws_connection() -> {ok, Pid1} = gun:open(?WS_HOST, ?WS_PORT, ?WS_OPTS), {ok, http} = gun:await_up(Pid1), Ref1 = monitor(process, Pid1), StreamRef1 = gun:ws_upgrade(Pid1, ?WS_PATH, ?WS_HDRS, #{compress => true}), receive {gun_upgrade, Pid1, StreamRef1, [<<"websocket">>], _} -> #{pid => Pid1, monitor_ref => Ref1, stream_ref => StreamRef1} after ?WS_TIMEOUT -> #{error => timeout} end, #{connection_pid => Pid1, connection_ref => Ref1}.

    • 在 init_per_suite 中调用函数:
      {ok, StartedApps} = application:ensure_all_started(?APP_NAME) 我有测试用例:testcase1, testcase2。

      在测试用例中我尝试发送请求: SendMsgReq = jiffy:encode(Req), gun:ws_send(PID, {text, SendMsgReq})

      但是当我使用连接的 PID 时,我得到响应:{error, timeout} 在测试用例中创建连接时,一切正常。

    猜你喜欢
    • 2017-04-14
    • 2018-12-21
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多