前面简介了WSDL协议和JAVA类的接口测试方法,接下来这一小节我们将介绍HTTP协议下如何使用web_submit_data进行接口测试。
web_submit_data函数的语法如下:
int web_submit_data( const char *StepName, const char *Action, <List of Attributes>, ITEMDATA,<List of data>, [ EXTRARES, <List of Resource Attributes>,] LAST );
下面对语法中的核心参数进行详细的介绍。
1. StepName
SetpName是指步骤名,表示在VuGen中树形图中显示的名称,如果是自动事务处理也可以做事务名称。
2. Action
表示表单提交的URL地址,即要测试的URL地址,语法为"Action=<urlAddress>"
3. List of Attributes
表示提交表单请求时所涉及到的相关参数,主要的参数包括:
Method:表单提交方法,也可以理解为HTTP的请求方法,常见的有GET和POST两种,一般POST的使用的更多。
EncType:是指使用的编码类型,指定其做为Content-Type请求头的值,设置的格式有以下三种:
Ø "EncType=application/x–www–form–urlencoded"
Ø "EncType=multipart/form–data"
Ø "EncType=" (如果设置为空,表示没有产生内容类型请求头)
EncodeAtSign:表示是否使用ASCII值对“@”进行编码,如果是就设置为YES,反之设置为NO。
TargetFrame:表示当前链接、资源的Frame名称。
Referer:所涉及到的URL地址,就是我们要发送请求的相关URL地址,一般情况这个可以省略。
Mode:脚本录制模式,有两种HTML和HTTP两种,我们通常都是使用HTTP的模式。
ITEMDATA:属性和数据列表的分割标记。
4. List of Data
表示需要提交的表单数据列表。提交表单数据的语法格式为:
"name=n1", "value=v1", ENDITEM,
"name=n2", "EncryptedValue=qwerty", ENDITEM,
在提交表单数据时可以提交简单的,也可以是一些经过加密的数据。
如果提交加密的数据,那么value值应该是加密后的值,如以下代码:
"Name=password", "EncryptedValue=5c0e2ec0330afc1b417d", ENDITEM,
要获取加密的值,可以使用Password Encoder(Start > Programs Files >LoadRunner > Tools > Password encoder)工具来获取。
如果需要对已加密的字符串进行解密,那么可以使用lr_decrypt函数对已加密的字符串进行解密。如以下代码:
"Name=password", lr_decrypt("5c0e2ec0330afc1b417d "), ENDITEM,
关于ItemData通常有以下一些参数:
name:表示表单字段名称;
Value:表示该字段所对应的值;
File:表示提交数据中是否包含文件,如果是就设置为YES;
ContentType:表示上传文件的文件类型标识符。如果指定了空值,那么“Content-Type”头将不包含在文件中。
ContentTransferEncoding:表示传输时内容的编码格式。
下面是一个添加商品的请求脚本:
web_submit_data("goods.php_3",
"Action=http://192.168.40.128:8091/ECShop_V2.7.3_UTF8_release0411/upload/admin/goods.php?act=add",
"Method=POST",
"EncType=multipart/form-data",
"RecContentType=text/html",
"Referer=http://192.168.40.128:8091/ECShop_V2.7.3_UTF8_release0411/upload/admin/goods.php?act=add",
"Snapshot=t54.inf",
"Mode=HTTP",
ITEMDATA,
"Name=MAX_FILE_SIZE", "Value=2097152", ENDITEM,
"Name=goods_name", "Value=IPHONE XS", ENDITEM,
"Name=goods_name_color", "Value=", ENDITEM,
"Name=goods_name_style", "Value=", ENDITEM,
"Name=goods_sn", "Value=", ENDITEM,
"Name=cat_id", "Value=1", ENDITEM,
"Name=addedCategoryName", "Value=", ENDITEM,
"Name=brand_id", "Value=1", ENDITEM,
"Name=addedBrandName", "Value=", ENDITEM,
"Name=shop_price", "Value=9999", ENDITEM,
"Name=user_price[]", "Value=-1", ENDITEM,
"Name=user_rank[]", "Value=1", ENDITEM,
"Name=volume_number[]", "Value=", ENDITEM,
"Name=volume_price[]", "Value=", ENDITEM,
"Name=market_price", "Value=11998.8", ENDITEM,
"Name=give_integral", "Value=-1", ENDITEM,
"Name=rank_integral", "Value=-1", ENDITEM,
"Name=integral", "Value=99", ENDITEM,
"Name=promote_start_date", "Value=2018-12-11", ENDITEM,
"Name=promote_end_date", "Value=2019-01-11", ENDITEM,
"Name=goods_img", "Value=C:\\goods \\goods001.JPG", "File=Yes", ENDITEM,
"Name=auto_thumb", "Value=1", ENDITEM,
"Name=goods_desc", "Value=", ENDITEM,
"Name=goods_weight", "Value=", ENDITEM,
"Name=weight_unit", "Value=1", ENDITEM,
"Name=goods_number", "Value=1", ENDITEM,
"Name=warn_number", "Value=1", ENDITEM,
"Name=is_on_sale", "Value=1", ENDITEM,
"Name=is_alone_sale", "Value=1", ENDITEM,
"Name=keywords", "Value=", ENDITEM,
"Name=goods_brief", "Value=", ENDITEM,
"Name=seller_note", "Value=", ENDITEM,
"Name=goods_type", "Value=0", ENDITEM,
"Name=img_desc[]", "Value=", ENDITEM,
"Name=img_url[]", "Value=", "File=Yes", ENDITEM,
"Name=cat_id1", "Value=0", ENDITEM,
"Name=brand_id1", "Value=0", ENDITEM,
"Name=keyword1", "Value=", ENDITEM,
"Name=is_single", "Value=1", ENDITEM,
"Name=cat_id2", "Value=0", ENDITEM,
"Name=brand_id2", "Value=0", ENDITEM,
"Name=keyword2", "Value=", ENDITEM,
"Name=price2", "Value=", ENDITEM,
"Name=article_title", "Value=", ENDITEM,
"Name=goods_id", "Value=0", ENDITEM,
"Name=act", "Value=insert", ENDITEM,
LAST);
,