Python 基于 websocket 协议&https 协议 进行自动化测试

defect_finder · 2022年09月27日 · 最后由 defect_finder 回复于 2022年09月28日 · 6307 次阅读

最近在写接口自动化脚本的时候,遇到一个问题,想请教下大佬们,探讨下处理方式。
场景描述:
1、websocket 接口建立通信用于接受推送,之后开始运行其他 https 协议的接口用例进行流程测试,此时发现推送的接口有阻塞,不能正常接受到推送
2、建立通信之后,脚本如何检测到有推送过来的内容

当前思考的解决方法是:
1、进程 1 去调 websocket 接口建立通信接受推送,新启一个进程 2 去跑流程的测试用例

问题:
1、还有没有其他的解决方法呢?
2、在接口工具中能明确看到,建立通信后,服务端有信息推送过来时,接口返回值中直接有展示。在脚本中,是要去监控接口的返回值去实时获取么?

最佳回复

看了下,基本原理上应该还是离不开要单独有个进程/线程去接收 ws 的推送消息的了。

至于用例怎么去校验推送过来的信息,建议可以搞个 queue(队列)。接受 ws 推送的进程,把收到的消息记录到 queue 中,包含消息内容 + 收到的时间戳。然后封装一个断言函数,里面判断在什么时间段内,应该收到什么样的消息,接着就到这个 queue 里面检查有没有符合条件的数据。用例通过这个断言函数就可以进行判定了。

共收到 4 条回复 时间 点赞

看了下,基本原理上应该还是离不开要单独有个进程/线程去接收 ws 的推送消息的了。

至于用例怎么去校验推送过来的信息,建议可以搞个 queue(队列)。接受 ws 推送的进程,把收到的消息记录到 queue 中,包含消息内容 + 收到的时间戳。然后封装一个断言函数,里面判断在什么时间段内,应该收到什么样的消息,接着就到这个 queue 里面检查有没有符合条件的数据。用例通过这个断言函数就可以进行判定了。

多进程需要解决进程间通讯的问题,更复杂。建议多线程,做好线程安全就可以了。更优的做法是异步 IO,技术难度高

asyncio 了解一下,网络通信用携程不要太爽,根本不用开线程。

感谢大佬们的建议🙏

defect_finder 关闭了讨论 11月03日 11:02
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册