(十一)TestNG学習の道—BeanShell高級用法

3587 ワード

目次


(一)TestNG学習の道-HelloWorld入門(二)TestNG学習の道-注釈と属性の概要(三)TestNG学習の道-TestNG.xml/YAML(四)TestNG学習の道-注釈詳細の@Test(五)TestNG学習の道-注釈詳細のパラメータ化(六)TestNG学習の道-注釈詳細の@Factory(七)TestNG学習の道-注釈詳細の無視テスト(八)TestNG学習の道-注釈詳細の同時(九)TestNG学習の道-失敗テスト再走(十)TestNG学習の道-符号化実行TestNG(十一)TestNG学習の道-BeanShell高級用法(十二)TestNG学習の道-注釈変換器(十三)TestNG学習の道-方法遮断器(十四)TestNG学習の道-TestNGリスナー(十五)TestNG学習の道-注入(十六)TestNG学習に依存する道-テスト報告(十七)TestNG+Rest Assured+Allureに基づくインタフェース自動化テストフレームワーク

前言


Jmeterの子供靴を使ったことがあるのは間違いなくBeanshellを聞いたことがあります.BeanShellは緩やかなタイプのスクリプト言語(JSと似ています)で、javaの文法に完全に合ったjavaスクリプト言語ですが、独自の文法と方法もあり、その機能の強さを見ることができます.さらに驚いたことに、TestNGはBeanshellと結合して強力なtestngを構築することができます.xml構成.

環境設定


beanshell公式サイトにログインしてbsh-2.0 b 4をダウンロードします.jar、$JAVA_に置くHOME/jre/lib/extディレクトリの下にあります.より詳細な説明はbeanshellマニュアルを参照してください.
To install as an extension place the bsh.jar file in your $JAVA_HOME/jre/lib/ext folder. (OSX users: place the bsh.jar in/Library/Java/Extensions or ~/Library/Java/Extensions for individual users.) Or add BeanShell to your classpath like this: windows: set classpath %classpath%;bsh-xx.jar


ラベルがtestngに表示されると.xmlの場合、TestNGは現在のtestラベルの下のグループと方法の<を無視します.include>,<exclude>ラベル、BeanShell式は、テストメソッドを実行するかどうかを決定する唯一の要素になります.<br> テストクラスを作成するには、</p>
<pre><code>import org.testng.Assert;
import org.testng.annotations.*;
@Test(groups = "test1")
public class TestNGHelloWorld1 {
@BeforeTest
public void bfTest() {
System.out.println("TestNGHelloWorld1 beforTest!");
}
@Test(expectedExceptions = ArithmeticException.class, expectedExceptionsMessageRegExp = ".*zero")
public void helloWorldTest1() {
System.out.println("TestNGHelloWorld1 Test1!");
int c = 1/0;
Assert.assertEquals("1", "1");
}
@Test()
@Parameters(value = "para")
public void helloWorldTest2(@Optional("Tom")String str) {
Assert.assertEquals("1", "1");
System.out.println("TestNGHelloWorld1 Test2! "+ str);
}
@AfterTest
public void AfTest() {
System.out.println("TestNGHelloWorld1 AfterTest!");
}
}
</code></pre>
<p>testng.xmlは以下の通りです:</p>
<pre><code><?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="All Test Suite"group-by-instances="true">
<test verbose="2"preserve-order="true"name="Test">
<method-selectors>
<method-selector>
<script language="beanshell">
<![CDATA[
groups.containsKey("test1")
]]>
実行結果は次のとおりです.
TestNGHelloWorld1 beforTest!
TestNGHelloWorld1 Test1!
TestNGHelloWorld1 Test2! Tom
TestNGHelloWorld1 AfterTest!

===============================================
All Test Suite
Total tests run: 2, Failures: 0, Skips: 0
===============================================

このことから、beanshellはテスト/開発者にtestngをより柔軟にすることができる.xmlで構成します.しかし、以下の点に注目する必要があります.
  • ブール値を返さなければなりません.この制約に加えて、有効なBeanShellコードも許可されます(たとえば、平日にtrueを返し、週末にfalseを返したい場合があります.これにより、日付に応じてテストを異なる方法で実行できます).
  • 便宜上、TestNGはjava.lang.reflect.Method method:現在の試験方法org.testng.ITestNGMethod testngMethod:現在のテスト方法の説明java.util.Mapgroups:現在の試験方法が属するグループのマッピング
  • 上記testng.xmlのgroups.containsKeyはブール値を返します.

    学習資料の拡張


    beanshellの学習については、beanshellマニュアルを参照してください.