私はたくさんグーグルで検索しましたが、道を見つけることができませんか?
Excel または xml ファイルの browsert 名を変更せずに、別のブラウザーでテスト スイートを実行したいと考えています。
誰かが私を助けてくれますか?
私はたくさんグーグルで検索しましたが、道を見つけることができませんか?
Excel または xml ファイルの browsert 名を変更せずに、別のブラウザーでテスト スイートを実行したいと考えています。
誰かが私を助けてくれますか?
JUnit を使用している場合は、次の方法で実行できます@RunWith(value = Parameterized.class)
。
@RunWith(value = Parameterized.class)
public class StackoverflowTestNoGrid {
private final WebDriver driver;
public StackoverflowTestNoGrid(final WebDriver driver) {
this.driver = driver;
}
@Parameters
public static Collection<Object[]> driverToTest() {
return Arrays.asList(new Object[][] { { new ChromeDriver() }, { new FirefoxDriver() } });
}
@Test
public void titleTest() {
this.driver.get("http://stackoverflow.com/");
// ... do some stuff
// ... assert smth
}
}
で注釈が付けられたメソッドでは、@Parameters
魔女のパラメーターをコンストラクターに渡す必要があると言えます。この場合、ChromeDriver と FirefoxDriver.
このブログは役に立つかもしれません。
http://santoshsarmajv.blogspot.in/2013/02/passing-parameters-to-testcase-using.html
例TestCase.java
public class ExampleTestCase
{
private static WebDriver driver;
private String browserName;
@Parameters({"browser,version"})
@BeforeClass
public void beforeClass(String browser,String version)
{
driver=getDriverInstance(browser,version);
browserName=browser;
}
@BeforeTest
public void beforeTest()
{
}
@Test
public void f()
{
//your test code here
}
@AfterTest
public void afterTest()
{
//along with your failure messages append browserName to know in which browser it has failed
System.out.println("Test failed in "+browserName);
}
@AfterClass
public void afterClass()
{
driver.quit();
}
}
testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite thread-count="2" name=MyTestSuite" parallel="tests">
<test name="RunInFirefox" preserve-order="false">
<parameter name="browser" value="firefox">
<parameter name="version" value="8"/>
<parameter name="profile" value="default">
<classes preserve-order="true">
<class name="com.test.TestCase1"/>
<class name="com.test.TestCase2"/>
<class name="com.test.TestCase3"/>
</classes>
</test>
<test name="RunInChrome" preserve-order="false">
<parameter name="browser" value="chrome">
<parameter name="version" value="21"/>
<classes preserve-order="true">
<class name="com.test.TestCase1"/>
<class name="com.test.TestCase2"/>
<class name="com.test.TestCase3"/>
</classes>
</test>
</suite>
Jenkins サーバーと統合する際に、通常とは異なる一連の要件がありました。
すべてのテストを抽象クラスに入れ、テストしたいブラウザごとにクラスを作成しました
TestChrome TestFirefox TestInternetExplorer
その後、テストが失敗すると、ブラウザは関連するパッケージ内のクラス名の一部として表示されます。
これにより、除外ルールと包含ルールを使用して、特定のブラウザーで実行したいテストをさまざまな Jenkins ジョブにオプションでフィルター処理することができました。IE のテストは非常に遅いため、Chrome を使用して実稼働環境をテストし、すべてが適切に展開されていることを確認できました。