2013-12-17 42 views
0

我正在C#中運行Selenium測試,我正在尋找一種將測試列表外部化爲文本文件的方式,以便無需觸摸代碼即可輕鬆進行編輯。 問題是如何調用文本文件的每一行作爲方法?操作似乎是最好的解決方案,但我無法將我的文本字符串轉換爲操作。 我接受所有關於如何最好地做到這一點的建議。 謝謝, J.如何存儲和執行文本文件中的類方法列表?

注意:儘管使用反射和調用是解決方案,但是當我有不同數量的參數的方法時,它不起作用。

using McAfeeQA.Core.Log; 
using OpenQA.Selenium; 
using OpenQA.Selenium.Firefox; 
using OpenQA.Selenium.Interactions; 
using System; 

namespace SeleniumProject 
{ 
class Program 
{ 

    static void Main(string[] args) 
    { 
     try 
     { 
      // Read through all tests and run one after another 
      // Global.Tests is a list of strings that contains all the tests 
      foreach (string testcase in Global.tests) 
      { 
       // How to run each of the below commented methods in a foreach loop??? 
      } 

      //Tests.CreateNewAdminUser("admin123", "password", "admin"); 
      //Navigation.Login(Global.language, Global.username, Global.password); 
      //Tests.testPermissionSets(); 
      //Navigation.Logoff(); 
     } 

     catch (Exception ex) 
     { 
      Console.WriteLine("Program exception: " + ex.ToString()); 
     } 
    } 

} 
} 

回答

0

不完美的,但簡化:

private void StoreMetod(string FileName, Type classType) 
{ 
    using (var fileSt = new System.IO.StreamWriter(FileName)) 
    { 
     foreach (var Method in classType.GetType().GetMethods()) 
     { 
      fileSt.Write(Method.Name); 
      fileSt.Write("\t"); 
      fileSt.Write(Method.ReturnType == null ? "" : Method.ReturnType.FullName); 
      fileSt.Write("\t"); 

      foreach (var prm in Method.GetParameters()) 
      { 
       //ect... 
      } 
     } 
    } 
} 

private void LoadMethod(string FileName, Object instant) 
{ 
    using (var fileSt = new System.IO.StreamReader (FileName)) 
    { 
     while (!fileSt.EndOfStream) 
     { 
      var lineMethodArg = fileSt.ReadLine().Split('\t'); 

      var methodName = lineMethodArg[0]; 
      var typeReturnName = lineMethodArg[1]; 

      //set parameters, Return type Ect... 

      var objectReturn = instant.GetType().GetMethod(methodName).Invoke(instant, {prms}); 
     } 
    } 
} 
相關問題