我想在不同的浏览器(Firefox,Chrome和Safari)上运行相同的测试。为此,我在测试中使用参数化。如果浏览器是chrome运行chrome,依此类推。
在{% if obj|hasattr:"might_not_exist" %}
我已指定并行运行测试,并在几个testng.xml
标记下重复相同的测试。
如果我要运行这么多测试怎么办?我将在<test>
标签中复制粘贴相同的测试。哪个看不到最佳解决方案。
我该如何解决这个问题?
以下是我的尝试:
<test>
答案 0 :(得分:0)
如果您确定要为所有三种浏览器运行所有测试,那么您可能会稍微更改一下设计。
为不同的测试用例创建多个测试类。在xml
test tags
中,将不同的测试类名称作为参数传递。
在参数化测试类中为每个接受类名作为参数的浏览器编写三个@test
方法。现在使用Reflections
,您可以在每个@test
方法中调用正确的测试方法。
答案 1 :(得分:0)
这里需要修理两件事,问题就解决了。
首先:更新TestNG.xml文件以包含浏览器名称
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel test suite" parallel="tests">
<test name="Firefox Test">
<parameter name="browser" value="Firefox" />
<classes>
<class name="ParallelBrowser.SameTestDifferentBrowsers" />
</classes>
</test>
<test name="Chrome Test">
<parameter name="browser" value="Chrome" />
<classes>
<class name="ParallelBrowser.SameTestDifferentBrowsers" />
</classes>
</test>
<test name="Safari Test">
<parameter name="browser" value="safari" />
<classes>
<class name="ParallelBrowser.SameTestDifferentBrowsers" />
</classes>
</test>
第二:应在浏览器中安装并启用Safari浏览器扩展程序,并且不应将其保留在路径中。
所以只需在Java代码文件中注释以下行
//System.setProperty("webdriver.safari.driver",
//System.getProperty("user.dir") + "/lib/browsers/SafariDriver.safariextz");