我想对以下场景进行自动化测试:
我希望步骤1.和3.由Selenium完成。问题是:作为自动化测试的一部分,我该如何进行第2步?
有关工具和环境的详细信息:
我在想的几个解决方案:
由于各种原因,这些解决方案都不是理想的。
所以:有没有人试图解决类似的问题?希望听到您认为可行的解决方案或其他想法。感谢。
答案 0 :(得分:1)
您可以在cmd上的Windows上执行以下命令以断开连接并重新连接网络。
> ipconfig /release
> ipconfig /renew
使用此方法,您可以使用Java Runtime
类来执行命令。
Runtime.getRuntime().exec("ipconfig /release");
我在Windows上测试了这个并且它可以工作。 cmd命令的Linux等效项如下
> sudo ifconfig eth0 up
> sudo ifconfig eth0 down
请注意,eth0此处是以太网连接的名称。您可以使用
列出所有连接的名称> ifconfig -a
您可以查看以下线程以通过Java执行bash - How to execute bash command with sudo privileges in Java?
答案 1 :(得分:1)
Stubbing
您必须确定抛出的异常是什么以及在实际案例场景中抛出它的组件是什么。您可以轻松地执行此操作,模拟计算机中的方案,并在抛出异常时,堆栈跟踪将准确地告诉您抛出的组件。
然后,你必须扩展抛出异常的组件并将其注入适当的位置,最终创建一个API来触发该异常。
如果您认为需要一个框架来自动执行此类测试,请查看Fitnesse。
<强>模拟强>
模拟真实的网络问题,过于复杂,在这种情况下(imo)的好处不值得。
无论如何...... Linux拥有一个优秀的内置网络仿真层,名为netem,可以与网络流量进行任何形式的无缝交互。此内核模块由tc
命令行界面控制。
当你想将这些条件应用于单个端口时,要做到这一点并不容易,因为你必须:
一个简单的例子是,如果你想在整个eth0上丢包10%,那么你将使用:
tc qdisc change dev eth0 root netem loss 10%
然后,您必须以某种java可控方式包装此功能。 如果我没有劝阻你,这是一个很好的指南:TrafficControl