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

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

满世界都在整蛊开玩笑!


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


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


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



爱!信!不!信!




3250009d9d13d11430c




以下正文



(翩baohuhaonideyanjing



3e8000598d700c0f627


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



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




3e4000705ac737a0dc1




以上是一个简单的登录测试用例,看上去没有任何问题,但是最后的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相关示例代码如下:


3e50006fdd7a258e506


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


Splinter中检查相关代码如下:


3e70007030b0473203f


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


3e8000598d588445ae3


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


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


3250009d9d25b6c76d4


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


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

相关文章
|
19天前
|
机器学习/深度学习 敏捷开发 人工智能
探索自动化测试的前沿技术与实践挑战
【7月更文挑战第8天】随着信息技术的飞速发展,软件测试领域正经历着前所未有的变革。自动化测试作为提升测试效率、确保软件质量的重要手段,其前沿技术与实践挑战备受关注。本文深入探讨了自动化测试的最新进展,包括人工智能在测试用例生成中的应用、持续集成/持续部署(CI/CD)流程中的自动化策略、以及云测试平台的兴起。同时,文章分析了自动化测试实施过程中遇到的主要挑战,如环境配置的复杂性、测试用例的维护问题和跨平台测试的困难,并提供了相应的解决策略。通过案例分析,展示了成功实施自动化测试的关键因素,为软件测试专业人员提供了宝贵的参考和启示。
28 2
|
4天前
|
机器学习/深度学习 人工智能 算法
探索软件测试的前沿技术:AI与自动化的融合
在数字化时代的浪潮中,软件测试领域正经历着前所未有的变革。本文深入探讨了人工智能(AI)和自动化技术如何重塑软件测试的未来。通过分析最新的行业报告、案例研究和专家访谈,我们揭示了这些技术如何提升测试效率、准确性和灵活性。文章还讨论了实施这些技术的可能挑战和解决方案,为读者提供了宝贵的行业见解和实用建议。
38 6
|
13天前
|
机器学习/深度学习 运维 算法
Doping:使用精心设计的合成数据测试和评估异常检测器的技术
在这篇文章中,我们将探讨测试和评估异常检测器的问题(这是一个众所周知的难题),并提出了一种解决方案被称为“Doping”方法。使用Doping方法,真实数据行会被(通常是)随机修改,修改的方式是确保它们在某些方面可能成为异常值,这时应该被异常检测器检测到。然后通过评估检测器检测Doping记录的效果来评估这些检测器。
14 0
|
17天前
|
机器学习/深度学习 敏捷开发 人工智能
现代软件测试技术的演进与应用
随着软件行业的快速发展,软件测试技术也在不断演进和创新。本文探讨了现代软件测试技术的最新趋势和应用,包括自动化测试、持续集成与持续交付、AI在测试中的应用等方面。通过分析这些技术的发展,我们可以更好地理解如何提高软件质量、加速交付,并提升开发团队的效率和创新能力。 【7月更文挑战第10天】
20 3
|
19天前
|
安全 物联网 物联网安全
物联网设备的安全性评估与测试:技术深度解析
【7月更文挑战第7天】物联网设备的安全性评估与测试是保障物联网系统安全运行的重要环节。通过实施全面的安全性评估与测试,可以发现并修复设备中存在的安全漏洞和风险,提高整体安全防护能力。然而,由于物联网设备的多样性和复杂性以及安全标准与监管的缺失等挑战,测试工作需要不断创新和优化。未来,随着技术的不断进步和实践的深入,物联网设备的安全性评估与测试将更加完善和高效。
|
24天前
|
安全 测试技术 网络安全
网络安全中的渗透测试与风险评估:技术深度解析
【7月更文挑战第3天】在网络安全领域,渗透测试和风险评估是两种不可或缺的技术手段。通过模拟黑客的攻击手段来发现系统中的安全漏洞,以及通过系统性的方法来识别和评估潜在的风险和威胁,两者共同为组织提供了全面的网络安全保障。随着技术的不断发展和网络环境的日益复杂,渗透测试和风险评估的重要性将日益凸显。因此,网络安全从业者应不断学习和掌握这两种技术,以应对日益严峻的网络安全挑战。
|
25天前
|
Devops jenkins 测试技术
如何在Visual Basic项目中实施单元测试以确保代码健壮性
【7月更文挑战第2天】本文探讨了如何在Visual Basic项目中实施单元测试以确保代码健壮性。单元测试基础包括验证代码单元的功能,促进重构和提高代码质量。MSTest、NUnit和xUnit是VB.NET的单元测试工具。遵循TDD原则,保持测试独立,关注单一功能,并确保快速执行。示例展示了如何为`Calculator`类的加法方法编写MSTest。持续集成与自动化测试工具如Jenkins和Azure DevOps辅助测试运行和代码质量检查。单元测试是提升软件质量和开发效率的关键实践,反映了良好的开发文化。
25 2
|
16天前
|
机器学习/深度学习 人工智能 运维
探索自动化测试的前沿技术与实践
随着软件行业的快速发展,传统的手动测试方法已难以满足日益增长的质量保证需求。自动化测试作为提高测试效率和准确性的关键手段,正逐渐成为软件开发过程中不可或缺的一部分。本文将深入探讨自动化测试的最新技术趋势,分析其在现代软件开发生命周期中的应用,并提供一系列实施策略,旨在帮助读者理解并掌握自动化测试的核心技术和方法。
|
18天前
|
Java 测试技术 Maven
在Java项目中集成单元测试与覆盖率工具
在Java项目中集成单元测试与覆盖率工具
|
19天前
|
Java 测试技术 数据库
在Spring Boot项目中集成单元测试的策略
在Spring Boot项目中集成单元测试的策略

热门文章

最新文章