问答 在自动化测试里,可以一边网页 / 手机自动化测试,一边动态刷新日志吗?

醋精测试媛 · 2020年11月03日 · 最后由 醋精测试媛 回复于 2020年11月09日 · 3238 次阅读

设想一个情景,左边自动化测试运行,右边动态刷新相应的一些日志,比如 “18:20:35 正在运行测试用例 2” 之类的。这种情景是否可以实现呢?

我现在最多只能生成一个 html 报告,而且必须所有测试结束后才可以看到测试结果,在测试用例很多,测试时间很长的情况下,感觉存在一些不够实用的地方,所以想问一下如何实现以上情境呢?

最佳回复

日志监听:
python logging 模块提供的 handler 说明:https://docs.python.org/zh-tw/3/howto/logging.html#useful-handlers

测试结果监听:
unittest 可以基于 TestRunner 里面的 TestResult 来做,可以参考 https://github.com/SeldomQA/HTMLTestRunner/blob/master/HTMLTestRunner.py 里面 class _TestResult(TestResult): 这个部分的实现

共收到 12 条回复 时间 点赞

可以的,你在执行的时候保存下 log,然后写个页面每次去获取这个 log,解析一下包装成你想要的数据就行了。

少年 回复

谢谢~我可以试试😄

可以做到动态刷新,脚本中插入打印日志语句即可。

1、在开发环境运行时可以直接在 IDE 的控制台里查看日志
2、在非开发环境以本地方式运行,可以使用日志工具写日志文件,再做个桌面应用读取刷新
3、如果是以远程方式运行。写个 web 页面来获取服务端 log

技术上都可以,实际怎么做方便就看你想要达到什么样的效果了。

可以直接在日志框架和测试框架加新的自定义 handler ,每条日志以及每个用例执行结果都记录到数据库,网页做定时刷新,定时去拉数据库数据。

如果不想搞太多额外的开发,其实直接日志打印到控制台,jenkins 用 console output 看也基本是实时的。唯一缺点是没有最终报告格式那么好看,和 idea 控制台差不多效果。

另外,也建议考虑清楚这个需求的使用场景。大部分自动化测试的执行期间,是无人值守的,基本上都是跑完了一段时间,才有有空人看下报告,甚至跑失败告警了才有人去看报告。不一定有太多跑的过程中时不时去看一眼进展的场景。如果想知道进度百分比,jenkins 根据历史执行时间预估出来的进度条也可以作为一个不错的参考。

陈恒捷 回复

您好,我好像在 python 语言中很少遇到监听器和 handler,请问 python 如何实现监听和记录呢?

日志监听:
python logging 模块提供的 handler 说明:https://docs.python.org/zh-tw/3/howto/logging.html#useful-handlers

测试结果监听:
unittest 可以基于 TestRunner 里面的 TestResult 来做,可以参考 https://github.com/SeldomQA/HTMLTestRunner/blob/master/HTMLTestRunner.py 里面 class _TestResult(TestResult): 这个部分的实现

这个涉及到 websocket;日志实时刷新

傻一点就远程连接服务器;在执行下 tail -f

楼主如果用 python-django 框架的话;去看下 channels 和 celery

pytest 框架会在执行代码过程中自动生成日志哦

陈恒捷 回复

多谢,我正在看。

醋精测试媛 关闭了讨论 11月09日 15:50
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册