【发布时间】:2020-06-10 11:35:10
【问题描述】:
谁能帮帮我? 我有基于 websockets 的服务器。 我想使用通用测试 (CT) 在测试用例之间传递连接 ID 并为所有测试用例仅使用一个连接来测试 API。 测试用例关闭连接。
如果可能的话,请给我一个例子。
【问题讨论】:
标签: http websocket erlang cowboy gun
谁能帮帮我? 我有基于 websockets 的服务器。 我想使用通用测试 (CT) 在测试用例之间传递连接 ID 并为所有测试用例仅使用一个连接来测试 API。 测试用例关闭连接。
如果可能的话,请给我一个例子。
【问题讨论】:
标签: http websocket erlang cowboy gun
如果您将测试用例组织成组和(测试)套件中的组,您可以使用函数init_per_suite/1、end_per_suite/1、init_per_group/2、end_per_group/2、init_per_testcase/2 和end_per_test_case/2 来创建并销毁您需要的所有资源,并在必要的时间内使它们保持活力。有一个Config2 可以使用init 传递,它旨在用于运行时 配置。
如果您无法将信息传递给您的测试用例,您可以将它们存储在您在正确的 init_per_XXX 级别生成并在相应的 end_per_XXX 销毁的已注册服务器中(一个对几个请求作出反应的简单循环)。
【讨论】:
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}. 在测试用例中我尝试发送请求: SendMsgReq = jiffy:encode(Req), gun:ws_send(PID, {text, SendMsgReq})
但是当我使用连接的 PID 时,我得到响应:{error, timeout} 在测试用例中创建连接时,一切正常。