【技术干货】测试Angular项目的正确姿势

简介: 愚人节不愚人,继续深度技术!满世界都在整蛊开玩笑!我们就是要正正经经讲技术!有技术就是这么傲娇!这么任性!

满世界都在整蛊开玩笑!


我们就是要正正经经讲技术!


有技术就是这么傲娇!这么任性!


我说明天放假!你信吗!连放三天你信吗!



爱!信!不!信!







以下正文



(翩baohuhaonideyanjing




本文作者:上海驻云开发实施工程师 (实 shi 力 li wu wang方!舟!



在Web自动化测试方面,Selenium得到了广泛的应用,Splinter基于Selenium封装了更上层的API,用来方便测试人员编写用例,但我们使用Splinter测试我们的Web应用时发生了一些问题。







以上是一个简单的登录测试用例,看上去没有任何问题,但是最后的assert永远是失败的,因为我们使用了Angular,整个网站是全异步的,在执行那条assert的时候登录接口还未返回,而页面并没有进行重新加载,Splinter不会等待便会直接进行assert。


最简单直接的解决方法当然是在assert之前sleep一段时间,这个时间可以根据我们应用的实际响应速度进行调整,例如500ms,但是作为一个有强迫症的程序员,如此dirty的方法当然是不能接受的。


于是我跟我们公司的前端工程师讨论了一下(就是题图里面右边那个吐舌头的绅(hen)士(tai),对,我就是旁边那个福禄娃),给我们程序的rootScope设定一个counter,然后给rootScope一个interval,interval执行的内容是当counter为0的时候给body标签加一个pageReady的class,不为0就去掉,将我们封装过的发送http请求代码内发出时将counter加1,请求完成时-1。


JavaScript相关示例代码如下:



而后在Splinter中加入检查的代码,根据body的pageReady来进行检查,当然也需要有一个次数限制,毕竟页面有可能挂掉或者怎样,如果超过次数限制了也跳出,例如我在示例代码中写的是10次,在实际使用中可以根据场景调整这个时间。


Splinter中检查相关代码如下:



然后将最开始那个登录的代码加上wait_page_ready,改为:



其实visit后也要加入wait_page_ready,因为页面也有可能是异步加载的,最开始的例子中到assert才报错是因为刚好我们的login页面整个layout是一体的。


然而在编写测试用例时在每个正确的地方添加wait_page_ready太麻烦而且太不优雅了(知乎上多了干什么都要优雅一点),自然需要自动加一一下,以下代码则是自动给测试用例的visit,click等事件之后加上wait_page_ready。



好了,现在使用这个run方法来跑测试最开始那个测试用例,优雅并准确的解决了异步加载的Angular Web应用的自动化测试问题。


好啦~~~本文到这里也就结束啦~如果还希望了解更多相关知识的话,就赶紧订阅我们吧~~~

相关文章
|
1天前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
49 32
|
4天前
|
测试技术
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
本文介绍了如何使用Pytest和Allure生成自动化测试报告。通过安装allure-pytest和配置环境,可以生成包含用例描述、步骤、等级等详细信息的美观报告。文章还提供了代码示例和运行指南,以及重构项目时的注意事项。
26 1
自动化测试项目学习笔记(五):Pytest结合allure生成测试报告以及重构项目
|
4天前
|
测试技术 Python
自动化测试项目学习笔记(四):Pytest介绍和使用
本文是关于自动化测试框架Pytest的介绍和使用。Pytest是一个功能丰富的Python测试工具,支持参数化、多种测试类型,并拥有众多第三方插件。文章讲解了Pytest的编写规则、命令行参数、执行测试、参数化处理以及如何使用fixture实现测试用例间的调用。此外,还提供了pytest.ini配置文件示例。
12 2
|
4天前
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
16 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
10天前
|
人工智能 自动驾驶 机器人
【通义】AI视界|苹果自动驾驶汽车项目画上句号:加州测试许可被取消
本文精选了24小时内的重要科技新闻,包括Waymo前CEO批评马斯克对自动驾驶的态度、AMD发布新款AI芯片但股价波动、苹果造车项目终止、Familia.AI推出家庭应用以及AI逆向绘画技术的进展。更多内容请访问通义官网体验。
|
16天前
|
机器学习/深度学习 存储 监控
深入解析软件测试中的自动化测试技术
本文旨在全面探讨软件测试中的自动化测试技术。通过对自动化测试的定义、优势、常见工具和实施步骤的详细阐述,帮助读者更好地理解和应用自动化测试。同时,本文还将讨论自动化测试的局限性及未来发展趋势,为软件测试人员提供有益的参考。
41 6
|
13天前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
30 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
19天前
|
Java Maven
Maven 项目测试
接下来我们要学习如何构建和测试这个项目。
28 5
|
21天前
|
JavaScript
vue尚品汇商城项目-day07【55.编码测试与打包发布项目】
vue尚品汇商城项目-day07【55.编码测试与打包发布项目】
25 3
|
4天前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
19 0