当我平台上点击测试按钮的时候,启动浏览器访问百度,启动的页面没有卡,但是我平台的页面卡死了。
请问一下这是什么原因?是不是我平台一直在等待请求的结果导致卡死?
你的平台和执行不是分开的吗?感觉是不是单线程,执行的时候就响应不了页面了?
是分开的,因为我点击完测试是通过 POST 将数据传过去的。
不知道是不是因为我是在 POST 接口里面操作的所以导致这样,还没搞明白。
我从另外一台机子访问平台,然后去执行操作的时候一样卡死了。
ajax 异步请求的多啊,尽量别用异步
建议详细说下你这个 “点击测试” 按钮点击背后,到底平台做了啥事?
信息太少,只有个截图,也没有齐全的日志(浏览器的、平台服务端的)、大致功能实现逻辑,大伙也不好给你出主意,只能靠猜。实现逻辑猜错了,给的意见也很难有参考意义。
F12 看一眼就应该知道接口一直在请求吧
你这个写的, 跟 Autotestplat,差别还蛮大啊
Autotestplat 我看过,也买了他的书,但没怎么看。
其实现在还没有很好的思路,不知道怎么样写会更好,单元测试不知道怎么写。
大佬,请教一个问题。
我现在是这样设计的:
WebDoc.py:接口处理的文件
test_task.py:执行测试的文件
keywords.py:关键字驱动文件
我不知道我这样做对不对,就是当我前端提交测试数据的时候,WebDoc 会去调用 test_task 的 run_main 方法并将数据传进这个方法,然后这个方法将拿到的数据做判断,例如判断到我的操作方法是打开浏览器,就去调用打开浏览器的关键字执行操作。
我现在不知道如果我要加入单元测试的话得写在哪,还有断言。
实现如果是同步,请求肯定要等后台反馈,后台处理延迟性应该作为一个独立异步任务处理,直接返回正在处理,处理完毕后将结果写入某个地方 或者实现实时通知 或者等待前台查询任务执行结果。
这个太粗了吧。。。
会向后台提交这些步骤
,具体是怎么提交,同步还是异步,一次交互还是多次交互?
去调用我判断这些元素并执行相应的方法去找到对应的关键字驱动
,这个是纯服务端还是服务端 + 客户端的操作?
建议画个 uml 时序图(可以用 plantuml 或者找些支持时序图的 markdown 编辑器),说明下网页点击这个 测试 按钮后,浏览器端和服务端的交互。比你写文字清晰多了。或者直接把你这方面的代码贴出来,也便于了解具体实现细节。
另外,从你的说明上,大致猜到你是用了同步请求,但正常来说同步请求浏览器或者服务端会有个默认超时时间,达到时间只会返回 504 或者 timeout 错误,不应该页面卡住。这里面应该还有其他的问题。需要你提供上面提到的实现细节才好定位解决。
刚入门,很多东西不太了解,表达的不够清楚,抱歉。
是异步请求,现在是情况是这样的,当我异步请求完成之后,没有返回结果,就像下图一样。
但是当我改成同步请求的时候就有结果了。
所以,我现在不知道问题出现在前端还是后端接口上。
我所了解的两种思路:
那就好。不好还是比较好奇,为啥一个 timeout 会导致 http method 都消失了。方便把你之前存在问题的代码附上来不?
另外,建议下次提问,可以把关键代码加上足够的注释,直接贴出来。这样沟通成本低很多。
好的,谢谢,我也觉得挺奇怪的
ajax:
start_test 接口的:
这里面调用的方法执行没问题我就不截了,调了好几个文件。
有想过类似的做法,但是没有思路,之前用 unittest,但是那参数我不知道得怎么传,(不知道怎么表达)就是步骤是根据我填进去的数据执行相应的关键字驱动的,所以不知道得怎么设计。
建议你还是先参考一下其他的平台方案,然后想想自己如何设计吧
感觉你还不清楚要什么效果就在折腾具体代码的问题,很难绕出来。
先把架构设计清楚,再谈实施。