(十一)TestNG學習之路—BeanShell高級用法

目錄

(一)TestNG學習之路—HelloWorld入門
(二)TestNG學習之路—注解及屬性概覽
(三)TestNG學習之路—TestNG.xml/YAML
(四)TestNG學習之路—注解詳述之@Test
(五)TestNG學習之路—注解詳述之參數化
(六)TestNG學習之路—注解詳述之@Factory
(七)TestNG學習之路—注解詳述之忽略測試
(八)TestNG學習之路—注解詳述之并發(fā)
(九)TestNG學習之路—失敗測試重跑
(十)TestNG學習之路—編碼執(zhí)行TestNG
(十一)TestNG學習之路—BeanShell高級用法
(十二)TestNG學習之路—注解轉換器
(十三)TestNG學習之路—方法攔截器
(十四)TestNG學習之路—TestNG監(jiān)聽器
(十五)TestNG學習之路—依賴注入
(十六)TestNG學習之路—測試報告
(十七)基于TestNG+Rest Assured+Allure的接口自動化測試框架

前言

用過Jmeter的童鞋肯定都聽說過Beanshell,BeanShell是一種松散類型的腳本語言(和JS類似),一種完全符合java語法的java腳本語言,但其也擁有自己的語法和方法,足以可見其功能的強大。更讓你吃驚的是,TestNG居然可以同Beanshell結合,構建強大的testng.xml配置。

環(huán)境配置

登錄beanshell官網下載bsh-2.0b4.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

示例

當在<script>標簽出現在testng.xml時,TestNG將忽略當前test標簽下的組和方法的<include>,<exclude>標簽,您的BeanShell表達式將是決定是否執(zhí)行測試方法的唯一因素。
編寫測試類如下:

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!");
    }
}

testng.xml如下:

<?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")
       ]]>
                </script>
            </method-selector>
        </method-selectors>

        <classes>
            <class name="TestNGHelloWorld1"/>
        </classes>
    </test>
</suite>

執(zhí)行結果如下:

TestNGHelloWorld1 beforTest!
TestNGHelloWorld1 Test1!
TestNGHelloWorld1 Test2! Tom
TestNGHelloWorld1 AfterTest!

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

由此可見,beanshell可讓測試/開發(fā)人員更靈活地對testng.xml進行配置。但需要關注以下幾點:

  • 它必須返回一個布爾值。除了這個約束之外,還允許任何有效的BeanShell代碼(例如,您可能想在工作日期間返回true,在周末返回false,這將允許您根據日期以不同的方式運行測試)。
  • 為了方便起見,TestNG定義了以下變量:
    java.lang.reflect.Method method: 當前的測試方法
    org.testng.ITestNGMethod testngMethod: 當前測試方法的描述
    java.util.Map<String, String> groups: 當前測試方法所屬組的映射

上述testng.xml的groups.containsKey返回的正是布爾值。

擴展學習資料

關于beanshell的學習,可參考beanshell手冊。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,506評論 19 139
  • 感謝原作者的奉獻,原作者博客地址:http://blog.csdn.net/zhu_ai_xin_520/arti...
    狼孩閱讀 14,299評論 1 35
  • Spring Boot Web應用程序中注冊 Servlet 的方法實例 本文實例工程源代碼:https://g...
    光劍書架上的書閱讀 4,307評論 0 9
  • 《讓顧客自己來定價》| 吳詩蕓解讀 關于作者賈格莫漢·拉古,沃頓商學院營銷系主任,研究領域包括新產品定價、價格折扣...
    鴨梨山大哎閱讀 1,104評論 0 0
  • 你是來自宇宙深處 怦然跳動的王爵 踏著末世的星辰 手握滄瀾浩瀚 群星作騎 流光作衣 你是飛翔在深海靜謐 追求無限的...
    Ainolla閱讀 387評論 0 0

友情鏈接更多精彩內容