如何写接口自动化如何写接口自动化这个问题但凡涉足过自动化测试的人员都能娓娓道来。Requests、urlib、jmeter、curl等等不在话下。那么如何获取接口的url、参数、响应等信息呢答案就更是随口而出看接口文档、swagger/apifox等管理工具接口定义。再不济如果是web应用通过浏览器看接口请求啊。的确如此有“一万”种方法可以帮助我们获取到想要的接口信息。可是接口文档和接口定义/说明的有无往往取决于开发人员的自觉性。我们虽然能够要求但也不能百分百确定一定能够获得。因此通过浏览器等工具获取请求接口就成了我们常用的手段。我们以访问“51testing”网站为例简单说明浏览器获取接口请求的常见方式。如下图1所示为访问51testing网站首页时的浏览器面板截图。通过networkFetch/XHR就能获得http请求的url、status、response等信息。在我们编写自动化测试用例时这是常用且熟知的获取接口请求信息的方法。图1 访问51testing首页的浏览器network面板信息但是上述寻找接口路径/方法是完全可行的吗让我们以下图2为例。图2为51testing客服对话窗口当我们想模拟自动化测试获取发送请求的接口信息时却发现唯一一个通过Fetch/XHR获得的接口https://chat2445.talk99.cn/chat /msg.dll?cmdxx请求体Payload和响应体Response中没有任何与窗口对话中发送的内容“测试”有关的信息。那么这条信息是如何发送出去的呢图2 51testing客服对话窗口继续对话查看Fetch/XHR仍无任何接口请求。直到……在WS条目中发现了真相。原来是websocket啊果然是websocket啊图3 51testing客服对话窗口websocket简介及使用那么什么是websocket呢又为何要用websocket呢WebSocket 是一种在 Web 应用程序中提供双向通信的协议。它允许在客户端和服务器之间创建持久性的连接从而使得数据能够以低延迟和高效率进行双向传输。一些常见应用场景包括即时通讯应用程序像聊天应用、在线游戏等需要实时双向通信的应用场景中WebSocket 能够提供更好的性能和用户体验实时数据更新像股票市场、天气预报、实时地图等需要实时数据更新的应用中WebSocket 可以用来推送实时数据给客户端而不需要客户端不断地发起请求在线协作工具像 Google Docs、Trello 等在线协作工具可以使用 WebSocket 来实现多用户实时编辑、更新等功能实时游戏在线多人游戏需要实时的玩家位置、动作等信息同步WebSocket 可以帮助实现这些功能。显而易见客服对话窗属于第1种。那么websocket的url、请求内容和响应如何在浏览器中获取呢如下图4所示可以点击ws的链接通过Request URL得到的url再通过Messges获得发送的请求All下拉列表选择“send”和收到的响应All下拉列表选择“receive”。图4 websocket的url、请求和响应等查看方式如此我们知道了我们一些“看不见”的接口是如何发送请求的了。但是问题又来了知道了websocket的请求方式如何使用自动化脚本方式模拟呢我们以python 为例使用websocket库模拟websocket请求发送聊天信息。代码样例如下所示1.import websocket 2.import json 3. 4.def on_message(ws, message): 5. print(fReceived message: {message}) 6. 7.def on_error(ws, error): 8. print(fError occurred: {error}) 9. 10.def on_close(ws): 11. print(Connection closed) 12. 13.def on_open(ws): 14. print(Connection established) 15. # 发送消息 16. message { 17. c: 20001818, 18. u: e6054702278504214c792f583376d5ab, 19. v: 6817201c3614948f68de93ab151e53e5, 20. role: 2, 21. meeting: False, 22. cId: 876105175, 23. site: 0, 24. g: 10063915, 25. winId: b6f2f684f577413abb2ab166433b060e, 26. flag: False, 27. robot: False, 28. msg: 你好 29. } 30. ws.send(json.dumps(message)) 31. 32.if __name__ __main__: 33. websocket.enableTrace(True) 34. ws websocket.WebSocketApp(wss://chat2445.talk99.cn/chat/room/20001818/876105175/b6f2f684f577413abb2ab166433b060e, 35. on_messageon_message, 36. on_erroron_error, 37. on_closeon_close) 38. ws.on_open on_open 39. ws.run_forever()至此我们简单总结一下。浏览器开发者工具功能十分强大除了我们熟知的http请求还可以捕获websocket请求。然后我们可以通过得到的请求信息使用Python或其他开发语言帮助我们完成相关的接口测试。由此完成我们“看不见”的接口自动化测试。最后下方这份完整的软件测试 视频教程已经整理上传完成需要的朋友们可以自行领取【保证100%免费】​​​软件测试面试文档我们学习必然是为了找到高薪的工作下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料并且有字节大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。