我编写了一个硒测试,它可以点击"管理面板"页面上的每个选项,然后拍摄每个新页面的屏幕截图。
我现在的任务是对每种语言(目前为11种)进行测试。
如何继续?我是否为每种语言创建一个新的测试类。或者我在我现有的测试上做一个循环,循环通过每个URL(每种语言都有不同的URL)。
我的测试代码适用于每种语言。
那么,实现这一目标的最佳实践是什么呢?感谢的所有帮助
使用Java、TestNG和POM 进行编辑
如果您已经用JUnit编写了测试,那么您可以使用参数化运行程序来参数化测试。您可以将语言定义为参数,它会自动为提供的所有语言运行测试。
如果您使用的是TestNG,那么您也可以参数化测试,并使用@DataProvider
注释方法提供数据,更多详细信息请点击此处。
在我的理解中,使用现有的代码,因此如果发生任何更改,则需要较少的可维护性才能使脚本再次正常运行。
每种语言都会相应地维护日志和屏幕截图描述,以便正确跟踪错误。
我假设您使用的是POM!?如果是这样的话,那么重用你的页面对象当然是好事,但你会被限制不能通过链接文本来定位你的网络元素,这在一些网站上可能会变得困难。
如果这在你测试的网站上不是问题,那么继续重用你的类。如果是问题,那么您应该考虑为每个网页编写一个基类,并从这些基类中的每一个派生出每种语言的特定类,所有LinkText
和其他特定语言的东西都位于这些基类中。如果每页90%都是特定于语言的,那么省略基类并简单地为每页/语言组合编写一个类当然会更明智。
@RichardHansson使用上面提到的Gerald这样的DataProvider。如果您使用循环,那么任何测试上的1个错误都将导致所有其他测试无法运行,并且可能很难确定问题所在。如果使用@DataProvider注释,则
- 每个场景都将作为自己的测试运行,不依赖于其他
- 每个测试在测试报告中都有自己的结果
- 无代码重复
http://testng.org/doc/documentation-main.html#parameters-数据提供者