• <menu id="w2i4a"></menu>
  • logo smartbear TestComplete 系列教程

    文檔首頁>>smartbear TestComplete 系列教程>>自動化測試平臺TestComplete使用教程:從.NET程序集調(diào)用函數(shù)(下)

    自動化測試平臺TestComplete使用教程:從.NET程序集調(diào)用函數(shù)(下)


    TestComplete是一款具有人工智能的自動UI測試工具,利用自動化測試工具和人工智能支持的混合對象識別引擎,輕松檢測和測試每個桌面,Web和移動應(yīng)用程序。使用TestComplete,可以提高測試覆蓋率并幫助提供經(jīng)過實戰(zhàn)考驗的高質(zhì)量軟件。

    點(diǎn)擊下載TestComplete正式版

    在TestComplete中,您可以從腳本中調(diào)用駐留在任何.NET程序集中的例程。該程序集可以與.NET Framework或第三方.NET應(yīng)用程序一起提供。該教程內(nèi)容較多,分為上下兩篇文章,本文是下半部分內(nèi)容,緊接前文內(nèi)容~


    使用可選參數(shù)調(diào)用.NET例程

    從測試中調(diào)用.NET函數(shù)時,TestComplete不允許省略可選參數(shù)。也就是說,您必須在調(diào)用中指定所有參數(shù),包括可選參數(shù)。

    這意味著,如果要使用默認(rèn)參數(shù)值,則必須在調(diào)用中顯式指定它們。對此的部分解決方法是dotNET.System.Type.Missing作為可選參數(shù)值傳遞。例如,如果您有一種通過以下方式聲明的方法-

    C#

    namespace TestNamespace
    {
      static public class MyTestClass
      {
    
        // This method takes two parameters.
        // The Param1 parameter is required, the Param2 parameter is optional.
        static public void Method1(int param1, string param2 = "")
        {
          …
        }
    
      }
    }

    —然后從TestComplete腳本中調(diào)用它,可以使用以下代碼:

    Script

    dotNET.TestNamespace.MyTestClass.Method1(1, dotNET.System.Type.Missing)

    但是請注意,此變通辦法不適用于整數(shù),雙精度和布爾型可選參數(shù)。您可以將其用于字符串、日期、對象和其他參數(shù)類型。至于整數(shù)、布爾值或十進(jìn)制可選參數(shù),則必須在調(diào)用中指定適當(dāng)?shù)恼麛?shù)、雙精度和布爾值。

    使用.NET例程返回的值

    在.NET中,所有數(shù)據(jù)類型都是對象。因此,在測試中使用從.NET例程返回的值有一些細(xì)節(jié):

    1、.NET的整數(shù)、雙精度布爾值與TestComplete 數(shù)據(jù)類型兼容。您可以直接在測試中使用它們。

    2、通過OleValue屬性訪問.NET DecimalDateTime對象以及可枚舉成員的值。

    例如,要訪問System.DataTime.UtcNow保存當(dāng)前UTC時間的屬性:

    JavaScript, JScript

    dotNET.System.DateTime.UtcNow.OleValue
    Python

    dotNET.System.DateTime.UtcNow.OleValue
    VBScript

    dotNET.System.DateTime.UtcNow.OleValue
    DelphiScript

    dotNET.System.DateTime.UtcNow.OleValue
    C++Script, C#Script
    dotNET["System"]["DateTime"]["UtcNow"]["OleValue"]

    在某些情況下,可以將OleValue與.NET字符串(System.String對象)一起使用。例如,您可能需要使用OleValue將字符串值作為參數(shù)傳遞給用戶定義的腳本函數(shù),或者將該值與另一個字符串進(jìn)行比較。

    3、一維.NET數(shù)組具有額外的OleValue屬性,該屬性返回與Variant兼容的數(shù)組。這樣,您可以對返回的數(shù)組使用本機(jī)數(shù)組操作和腳本語言功能。

    例如,在VBScript中,可以使用LBound和UBound函數(shù)來確定數(shù)組的上下邊界,并使用括號語法arr(index)訪問數(shù)組元素。

    在JScript中,通過OleValue屬性獲得的С#Script和C ++ Script數(shù)組與本機(jī)數(shù)組格式不兼容。應(yīng)該首先使用toArray()方法將它們轉(zhuǎn)換為本地數(shù)組。

    JavaScript

    function newTest()
    {
      var dotnet_str = dotNET.System.String.Copy("Hello, world!");
      var dotnet_array = dotnet_str.ToCharArray();
      
      // Converting to a native array
      var array2 = dotnet_array.OleValue;
      for(let i = 0; i < array2.length; i++)
      Log.Message(array2[i]);
    }
    JScript
    function newTest()
    {
      var dotnet_str = dotNET.System.String.Copy("Hello, world!");
      var dotnet_array = dotnet_str.ToCharArray();
      
      // Converting to a native array
      var array2 = dotnet_array.OleValue.toArray();
      
      for(var i = 0; i < array2.length; i++)
      Log.Message(array2[i]);
      
    }

    Python

    def newTest():
      dotnet_str = dotNET.System.String.Copy("Hello, world!")
      dotnet_array = dotnet_str.ToCharArray()
     
      # Converting to a native array
      array2 = dotnet_array.OleValue
      
      for i in range(len(array2)):
        Log.Message(array2[i])

    VBScript

    Sub newTest
      Dim dotnet_str, dotnet_array, array2, i
      
      Set dotnet_str = dotNET.System.String.Copy("Hello, world!")
      Set dotnet_array = dotnet_str.ToCharArray()
      
      ' Converting to a native array
      array2 = dotnet_array.OleValue
      
      i = 0
      For i = LBound(array2) To UBound(array2)
        Log.Message(array2(i))
      Next
    End Sub

    DelphiScript

    procedure newTest;
    var dotnet_str, dotnet_array, array2, i;
    begin
      dotnet_str := dotNET.System.String.Copy('Hello, world!');
      dotnet_array := dotnet_str.ToCharArray();
      
      // Converting to a native array
      array2 := dotnet_array.OleValue;
      
      for i := VarArrayLowBound(array2,1) to VarArrayHighBound(array2,1) do
        Log.Message(array2[i]);
    end;

    C++Script, C#Script

    function newTest()
    {
      dotnet_str = dotNET["System"]["String"]["Copy"]("Hello, world!");
      dotnet_array = dotnet_str["ToCharArray"]();
       
      // Converting to a native array
      array2 = dotnet_array["OleValue"]["toArray"]();
      
      for(var i = 0; i < array2.length; i++)
      Log["Message"](array2[i]);
    }

    或者,您可以使用該GetValue方法訪問.NET數(shù)組項。

    JavaScript

    function arrayTest()
    {
      var dotnet_str = dotNET.System.String.Copy("Hello, world!");
      var dotnet_array = dotnet_str.ToCharArray();
      
    
      for(let i = 0; i < dotnet_array.Length; i++)
      {
        var elem = dotnet_array.GetValue(i);
        Log.Message(elem);
      }
    }

    JScript

    function arrayTest()
    {
      var dotnet_str = dotNET.System.String.Copy("Hello, world!");
      var dotnet_array = dotnet_str.ToCharArray();
      
    
      for(var i = 0; i < dotnet_array.Length; i++)
      {
        var elem = dotnet_array.GetValue(i);
        Log.Message(elem);
      }
    }

    Python

    def arrayTest():
      dotnet_str = dotNET.System.String.Copy("Hello, world!")
      dotnet_array = dotnet_str.ToCharArray()
     
      for i in range(dotnet_array.Length):
       Log.Message(dotnet_array.GetValue(i))

    VBScript

    Sub arrayTest
      Dim dotnet_str, dotnet_array, array2, i, elem
      
      Set dotnet_str = dotNET.System.String.Copy("Hello, world!")
      Set dotnet_array = dotnet_str.ToCharArray()
      
      For i = dotnet_array.GetLowerBound(0) To dotnet_array.GetUpperBound(0)
        Log.Message(dotnet_array.GetValue(i))
      Next
    End Sub

    DelphiScript

    procedure arrayTest;
    var dotnet_str, dotnet_array, array2, i, elem;
    begin
      
      dotnet_str := dotNET.System.String.Copy('Hello, world!');
      dotnet_array := dotnet_str.ToCharArray();
      
      for i := dotnet_array.GetLowerBound(0) to dotnet_array.GetUpperBound(0) do
       Log.Message(dotnet_array.GetValue(i));
    end;

    C++Script, C#Script
    function arrayTest()
    {
      dotnet_str = dotNET["System"]["String"]["Copy"]("Hello, world!");
      dotnet_array = dotnet_str["ToCharArray"]();
       
      for(var i = 0; i < dotnet_array.Length; i++)
      {
        var elem = dotnet_array["GetValue"](i);
        Log["Message"](elem);
      }
    }

    4、二維和多維.NET數(shù)組不具有OleValue屬性。要獲取數(shù)組元素,請使用其本機(jī)Get(index1, index2, ..., indexN)方法。

    5、要使用其他對象,請使用其內(nèi)部屬性和方法。

    樣品

    下面的示例演示如何創(chuàng)建System.String對象(在mscorlib程序集中定義)并在腳本中調(diào)用該對象的方法:

    JavaScript,JScript

    function Test()
    {
      var str, i;
    
      // Calling a class instance constructor
      str = dotNET.System.String.zctor_8(0x41, 3);
      Log.Message(str.OleValue); // Using the OleValue property
    
      // Calling a static method
      str = dotNET.System.String.Copy("Hello, world!");
    
      // Calling a class instance (non-static) method
      i = str.IndexOf("w");
      Log.Message(i);
    }

    Python

    def Test():
    
      # Calling a class instance constructor
      str = dotNET.System.String.zctor_8(0x41, 3)
      Log.Message(str.OleValue) # Using the OleValue property
    
      # Calling a static method
      str = dotNET.System.String.Copy("Hello, world!")
    
      # Calling a class instance (non-static) method
      i = str.IndexOf("w")
      Log.Message(i)

    VBScript

    Sub Test
      Dim str, i
    
      ' Calling a class instance constructor
      Set str = dotNET.System.String.zctor_8(&H41, 3)
      Log.Message str.OleValue ' Using the OleValue property
    
      ' Calling a static method
      Set str = dotNET.System.String.Copy("Hello, world!")
      ' Calling a class instance (non-static) method
      i = str.IndexOf("w")
      Log.Message i
    End Sub

    DelphiScript

    procedure Test;
    var str, i;
    begin
      // Calling a class instance constructor
      str := dotNET.System.String.zctor_8($41, 3);
      Log.Message(str.OleValue); // Using the OleValue property
    
      // Calling a static method
      str := dotNET.System.String.Copy('Hello, world!');
      // Calling a class instance (non-static) method
      i := str.IndexOf('w');
      Log.Message(i);
    end;
    C++Script, C#Script
    function Test()
    {
      var str, i;
    
      // Calling a class instance constructor
      str = dotNET["System"]["String"]["zctor_8"](0x41, 3);
      Log["Message"](str["OleValue"]); // Using the OleValue property
    
      // Calling a static method
      str = dotNET["System"]["String"]["Copy"]("Hello, world!");
    
      // Calling a class instance (non-static) method
      i = str["IndexOf"]("w");
      Log["Message"](i);
    }

    TestComplete還包括一個示例項目,該項目展示了如何通過dotNET對象從.NET程序集調(diào)用函數(shù):

    應(yīng)用范圍:

    <TestComplete示例> \ Desktop \使用.NET類\ Application \ UserApp

    <TestComplete示例> \ Desktop \使用.NET Classes \ Application \ UserClassLib

    TestComplete項目套件:

    <TestComplete示例> \ Desktop \使用.NET類

    本教程內(nèi)容到這里就完結(jié)了,感興趣的朋友可以下載TestComplete試用版免費(fèi)體驗~

    相關(guān)內(nèi)容推薦:

    自動化測試平臺TestComplete使用教程:從.NET程序集調(diào)用函數(shù)(上)


    想要購買TestComplete正版授權(quán),或了解更多產(chǎn)品信息請點(diǎn)擊【咨詢在線客服】


    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();