Ranorex中利用code module对于测试数据的管理

我们在做一款自动化测试工具时,保持测试环境的整洁,是很重要的。也就是说,当我们自动创建了测试数据,在完成测试后,要把测试数据删除掉,这样才不会产生很多的垃圾数据,对测试环境造成影响。于是,测试数据的维护,就成了一个话题。

在这个项目中,我们是这样做的,用程序自动维护测试数据,比如测试创建用户这个功能,有以下一些测试数据:

loginname,   userlastname

test_user1,   TestUser1

这些字段都加了数字作为标记。测试用例是这样设计的:

1. 用这些测试数据创建用户

2. 创建成功后,删除这个用户以保持测试环境的清洁。

3. 调用自我开发的函数,修改测试数据,使得数字标记加1。

于是,当这个测试用例跑完后,外部的测试数据变成:

loginname,   userlastname

test_user2,   TestUser2

这是思路,关于第一点和第二点,在Ranorex中写一些recording module就可以做到。我描述一下,第三点。

要实现这个功能,首先,在Renorex里面,创建一个code module,比如,IncreaseTestData.cs,然后写一个方法,这个module的代码如下:

public void increAttribute(string attribute, string testdatapath)
{
        // Load test data          
    CsvDataConnector csvConnector = new Ranorex.Core.Data.CsvDataConnector("CSVConnector",testdatapath,true);
                                                                                                                        
    csvConnector.SeparatorChar = ',';
    ColumnCollection outColCollection;
                                                                                                                                 
    RowCollection outRowCollection;
    RowCollection resultRowCollection;
    csvConnector.LoadData(out outColCollection, out outRowCollection);
                                                                                                                        
    string[] values = null;
    string thetarget = null;
                                                                                                                        
    resultRowCollection.Clear();
        // Find the target
    foreach(Ranorex.Core.Data.Row dataRow in outRowCollection)
    {
                                                                                                                           
       values = dataRow.Values;
       thetarget = dataRow[attribute].ToString();
                                                                                                                           
        // Loop over strings
        int i;
        for (i = 0; i < values.Length; i++)
        {
            if (values[i].Contains(thetarget) || values[i].Equals(thetarget))
            {
                                                                                                                                        
                if (!Regex.IsMatch(values[i], ".*[0-9]+$", RegexOptions.Compiled))
                {
                                                                                                                                        
                    values[i] = values[i] + "0";                      
                    break;
                }
                                                                                                                                
            break;
            }
        }
                                                                                                                            
                                                                                                                                        
        string theincrement = Regex.Match(values[i], @"(\d+)$").Value;
                                                                                                                            
        long incrementvalue = Convert.ToInt64(theincrement);
        incrementvalue++;
        char[] charsToTrim = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ' '};
                                                                                                                            
        thetarget = thetarget.TrimEnd(charsToTrim);
                                                                                                                                            
        string newvalue = thetarget + incrementvalue.ToString();      
        values[i] = newvalue;         
                                                                                                                            
        resultRowCollection.Add(values);
    } 
                                                                                                                               
    csvConnector.StoreData(outColCollection, resultRowCollection);
}


然后,我们在test case中,声明这个类的对象,(每个code module,在Ranorex中,都看成一个类),然后调用这个方法。

比如,在test case里面,添加一个recording modul, "Increase",在Increase.usercode.cs里面,写下如下代码:

IncreaseTestData incre=new IncreaseTestData();
incre.increAttribute("loginname","TC1_CreateUser\\TC1_CreateUser.csv");
incre.increAttribute("userlastname","TC1_CreateUser\\TC1_CreateUser.csv");




本文出自 “软件测试 自动化测试之路” 博客,谢绝转载!

你可能感兴趣的:(code,Module,测试数据,ranorex)