在jmeter中我需要发送一个带有随机文件名的文件路径,如何获取该随机文件名以传递请求

时间:2016-05-25 15:42:52

标签: web-services jmeter performance-testing load-testing webrequest

我正在加载测试Web应用程序场景,其中包括:

1。)首先,我需要上传一个将被解析的excel文件,并将表格(excel中的标签)加载到下拉列表中。

2.)然后在下拉列表中选择一个选项并单击导入按钮。

3。)点击导入后,弹出一个新的弹出窗口,其中包含一些加载到网格中的数据"更新到数据库"按钮。现在单击“更新到数据库”按钮。

这是我的负载测试场景,我需要加载测试" import"和"更新到数据库"请求

在这种情况下,4个请求有效。

  • 第1点:servicename网址为:/xxx/xxx/uploadLoader.aspx
参数中的

2个视图状态,按钮,appuser,公司,文件名(包含多部分数据)

响应:它返回文件上传控件的HTML

  • 第2点使用2个请求:

a)服务网址为:/xxxx/xxxx.asmx/updateImportSubTableFormat

in params:

{"as_connstring":["GET"],"alist_import":[{"__type":"ApplecartDS.DataLib.ImportTableMain","rowstate":"OLD","tableno":"019","oldtableno":"019","formatid":"I0000012","oldformatid":"I0000012","columnname":"pay_billrefno","oldcolumnname":"","columndesc":"Bill No","aormdesc":"Actual","excelcolumnname":"D","excelcolumnno":"3","excelcolumnnameadd1":"","excelcolumnnoadd1":-1,"excelcolumnnameadd2":"","excelcolumnnoadd2":-1,"serialno":"1","oldserialno":2,"formatname":"","startingrowno":0,"endingrowno":0,"keycolumn":"","keycolumndesc":"","payiddesc":null,"attributetype":"","paytype":"A",".............**some more output data here**.................... 1,"excelcolumnnameadd2":"","excelcolumnnoadd2":-1,"serialno":"3","oldserialno":3,"formatname":"","startingrowno":0,"endingrowno":0,"keycolumn":"","keycolumndesc":"","payiddesc":null,"attributetype":"","paytype":"A",""provision_actual":"P","dsexecstatus":"","dsmsg":"","slno":0,"as_fromatid":"I0000012","ai_xlcolumnname":"A","ai_xlcolumnno":"1","ai_startrow":"2","ai_endrow":0,"ai_header":"1","as_payid":"MEDRE","as_leaveid":"MEDRE","as_wfdcolname":"","ai_wfdcolno":0,"as_arrcolname":"","ai_arrcolno":0,"as_transafertype":"A"}

响应:

{"d":[{"__type":"ApplecartDS.DataLib.ImportTableMain","rowstate":"OLD","tableno":"","oldtableno":"","formatid":"","oldformatid":"","columnname":"","oldcolumnname":"","columndesc":"","aormdesc":"","excelcolumnname":"","excelcolumnno":0,"excelcolumnnameadd1":"","excelcolumnnoadd1":-1,"excelcolumnnameadd2":"","excelcolumnnoadd2":-1,"serialno":0,"oldserialno":0,"formatname":"","startingrowno":0,"endingrowno":0,.............**some more output data here**...................."","valuefrom":"E","default_value":"","aorm":"A","benefitsid":"","licpayid":"","createmaster":"","allowzero":"N","groupid":"","groupdesc":"","reimbpayid":"","provision_actual":"P","dsexecstatus":"","dsmsg":"","slno":0}]}

注意:如果我在parmas中遇到相同的请求,那么它会返回正确的相同响应。

b)服务网址为:/AAA/AAA.asmx/importXLData

in params:

{"as_connstring":["GET"],"as_filename":"C:\\Websites\\xxxx\\xxxx\\admin\\001\\admin115.248.100.6825520164659134Import_Template.xlsx","ai_header":2,"as_tablename":"rm_claimsmain","as_sheetname":"'Reim claim$'","as_tableno":"019","as_fromatid":"I0000012","as_creditperiodid":"","isUpdate":false,"isupdatemonattribute":false,"alistUpdatedata":[],"as_excelfilepath":"C:\\Websites\\xxxx\\xxxx\\admin\\001\\admin115.248.100.6825520164659134Import_Template.xlsx"}

响应

{"d":[{"__type":"ApplecartDS.DataLib.ExcelDataImport","CValues1":"","CValues2":"","CValues3":"","CValues4":"","CValues5":"","CValues6":"","CValues7":"","CValues8":"",..........**very long out put data here**.......
,"NValues50":0,"NValues51":0,3":0,"IValues4":0,"rowmodify":"N","rowstate":"OLD","dsexecstatus":null,"dsmsg":""}]}

注意:但是,如果我再次点击相同的请求,则会显示与上面的响应不同的响应(第一次响应)。因为在手册的情况下文件名每次都会更改,但我无法在JMeter请求中获取新文件名以传递它。

第二次回复:

{"d":[{"__type":"ApplecartDS.DataLib.ExcelDataImport","CValues1":"","CValues2":"","CValues3":"","CValues4":"","CValues5":"","CVal","CValues17":"","CValues18":"","CValues19":................................. dsexecstatus":"FAIL","dsmsg":"Exception : System.Data.OleDb.OleDbException (0x80004005): The Microsoft Office Access database engine could not find the object \u0027C:\\xxxx\\xxxx\\xxx\\admin\\001\\admin115.248.100.6825520165121629Import_Template_test_case_9May2016.xlsx\u0027.  Make sure the object exists and that you spell its name and the path name correctly. 

第3点正在使用1个请求

服务网址:/xxxx/xxxx.asmx/importXLData

in params

{"as_connstring":["GET"],"as_filename":"C:\\xxxx\\xxxx\\temp\\admin\\001\\admin115.248.100.682552016571324rm_claimsmain.xml;C:\\Websites\\cPayv8html\\temp\\admin\\001\\admin115.248.100.682552016571324rm_cliams.xml","ai_header":"1","as_tablename":"rm_claimsmain","as_sheetname":"'Reim claim$'","as_tableno":"019","as_fromatid":"I0000012","as_creditperiodid":"","isUpdate":true,"isupdatemonattribute":false,"alistUpdatedata":[{"__type":"ApplecartDS.DataLib.ExcelDataImport","CValues1":"Employee No;C;30;em_empno","CValues2":"Bill No;C;30;","CValues3":"Bill Date;D;30;","CVal/Date(-62135596800000)\/"..........**some more in data**..........,"DValues10":"\/Date(-62135596800000)\/","ls_msg1":"5","ls_msg2":"C:\\xxxx\\xxxx\\xx\\admin\\001\\admin115.248.100.682552016571324rm_claimsmain.xml;C:\\xxxx\\xxx\\xx\\admin\\001\\admin115.248.100.682552016571324rm_cliams.xml","ls_msg3":"","ls_msg4":"","NValues1":0,"NV4":0,"rowmodify":"N","rowstate":"OLD","dsexecstatus":null,"dsmsg":""}],"as_excelfilepath":"C:\\xxxx\\xxxx\\xxx\\admin\\001\\admin115.248.100.6825520164659134Import_Template_test_case_9May2016.xlsx"}

响应

{"d":[{"__type":"ApplecartDS.DataLib.ExcelDataImport","CValues1":"","CValues2":"","CValues3":"","CValues4":"","CValues5":"","CValues6":"","CValues7":"","CValues8":"","CValues9":"","CValues10":"","CValues11":"","CValues12":"","CValues13":"","CValues14":"","CValues15":"","CValues16":"","CValues17":"","CValues18":"","................................ "rowmodify":"N","rowstate":"OLD","dsexecstatus":"SUCCESS","dsmsg":"Update to Database success !    New Rows added :0 \u003c\u003e Rows Updated : 49"}]}

如果我再次点击相同的请求,则第二次响应是:

......................"dsexecstatus":"FAIL","dsmsg":"Exception : Could not find file \u0027C:\\Websites\\cPayv8html\\temp\\admin\\001\\admin115.248.100.682552016525264rm_claimsmain.xml\u0027."}]}

我的问题是在第二次响应时它没有显示正确的响应,因为文件名随机变化,我无法跟踪它以将更改的文件路径传递给请求。

有没有办法处理它?请帮帮我,如何用真实的响应加载测试。

2 个答案:

答案 0 :(得分:1)

$ {__ RandomString(6,a12zeczclk,MYVAR)} 将返回从a12zeczclk集中挑选的6个字符的随机字符串并将结果存储在MYVAR中,MYVAR将包含类似2z22ak或z11kce的字符串,......

请参阅: http://jmeter.apache.org/usermanual/functions.html#__RandomString

答案 1 :(得分:0)

展望

  

找不到文件\ u0027C:\ Websites \ cPayv8html \ temp \ admin \ 001 \ admin115.248.100.682552016525264rm_claimsmain.xml \ u0027。

当您上传文件时,它似乎存储在临时位置的某个位置,当文件导入数据库时​​ - 它被删除。所以这是经典的“关联”示例,您需要从先前的响应中获取动态参数并将其添加到下一个请求中。

我建议仔细检查服务器响应并从那里获取临时文件名。

当您的服务器使用JSON响应时,我建议使用

JSON Path语法非常简单,请查看以下参考: