2017-10-11 7 views
0

私のオートメーションフレームワークにmavenとtestngを使用しています。私はここでテストを実行すべきブラウザを指定する@BeforeMethodの上にこれらのパラメータを使用していますtestng.xmlに変数を渡す

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> 
<suite thread-count="40" name="Suite" parallel="tests"> 

    <test name="Test"> 
    <parameter name="browser" value="chrome"/> 
    <parameter name="version" value="latest"/> 
    <parameter name="os" value="windows 10"/> 
    <classes> 
    <class name="com.package.tests.TestApp"/> 
    </classes> 
    </test> 

    <test name="Test"> 
    <parameter name="browser" value="chrome"/> 
    <parameter name="version" value="latest"/> 
    <parameter name="os" value="windows 10"/> 
    <classes> 
     <class name="com.package.tests.TestApp"/> 
    </classes> 
    </test> 

</suite> 

:それは実装されていますように、今、私はtestng.xmlファイルを使用する必要があります。

クラス名トラフコマンドラインを渡す方法はありますか? $ {var}とBeanShellを試しました。これまでのところ運がありません。 ありがとうございます。

答えて

2

これは、IAlterSuiteListenerを利用して行うことができます。

TestNG(現在は6.12)の最新リリース版を使用していることを確認する必要があります。

次に、org.testng.IAlterSuiteListenerを実装するリスナーを作成します。このリスナー内には、基本的に任意の操作を行うことができます。あなたができることのいくつかは以下のとおりです。

  1. は動的に動的に<test>タグ内<class>タグを削除/追加<suite>タグ
  2. <test>のタグを追加/削除(推測していたあなたが探しているものです)あなたのスイートのようなthreadCountparallelモードなどの
  3. 変更属性、ここで

は簡略化されたサンプル

ですこれについての詳細は
public static class Listener implements IAlterSuiteListener { 

    @Override 
    public void alter(List<XmlSuite> suites) { 
     XmlSuite suite = suites.get(0); 
     //Pass the value as comma separated via JVM argument -Dclasses=com.foo.bar,com.bar.foo 
     String classNames = System.getProperty("classes", ""); 
     String[] classes = classNames.split(","); 
     if (classes.length != 0) { 
      XmlTest test = new XmlTest(suite); 
      test.setName("another_test"); 
      List<XmlClass> xmlClasses = new ArrayList<>(); 
      for (String className : classNames.split(",")) { 
       XmlClass xmlClass = new XmlClass(className.trim()); 
       xmlClasses.add(xmlClass); 
      } 
      test.setClasses(xmlClasses); 
      suite.setTests(Collections.singletonList(test)); 
     } 
    } 
} 

、あなたは私のブログの記事here

を参照することができます