0

私はたくさんグーグルで検索しましたが、道を見つけることができませんか?

Excel または xml ファイルの browsert 名を変更せずに、別のブラウザーでテスト スイートを実行したいと考えています。

誰かが私を助けてくれますか?

4

3 に答える 3

1

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.

于 2013-09-27T12:10:05.870 に答える
0

このブログは役に立つかもしれません。

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>  
于 2013-09-27T13:45:34.757 に答える
0

Jenkins サーバーと統合する際に、通常とは異なる一連の要件がありました。

すべてのテストを抽象クラスに入れ、テストしたいブラウザごとにクラスを作成しました

TestChrome TestFirefox TestInternetExplorer

その後、テストが失敗すると、ブラウザは関連するパッケージ内のクラス名の一部として表示されます。

これにより、除外ルールと包含ルールを使用して、特定のブラウザーで実行したいテストをさまざまな Jenkins ジョブにオプションでフィルター処理することができました。IE のテストは非常に遅いため、Chrome を使用して実稼働環境をテストし、すべてが適切に展開されていることを確認できました。

于 2013-11-25T21:39:38.757 に答える