1. 程式人生 > >loadrunner測試介面,將結果寫入日誌檔案

loadrunner測試介面,將結果寫入日誌檔案

Action()中使用web_custom_request()方法傳送請求

或者F1檢視web_custom_request的使用技巧

Action()
{
    web_custom_request( "court_user", //這個是給請求起個名稱,在樹形圖中顯示,不影響結果
                        "URL= http://192.168.7.55:8080/court_user", //介面的url
                        "Method=POST",
                        "RecContentType=application/json", //這裡指定介面傳參型別為json格式
                        "EncType=application/json", 
                        "Mode=HTTP", //是http請求
                        "Body={\"username\":\"
[email protected]
\",\"password\":\"000000\"}", //介面入參,引數中的 " 要轉義 LAST); return 0; }

列印響應文字,以及處理響應文字中文亂碼

執行成功後,發現沒有顯示出返回值,可以採取的措施有兩種:

  1. 修改runtime settings:’Vuser’–>’Run-Time Settings’–>’Log’–>’Extended log’–>’Data returned by server’,修改完成後,所有返回的資訊都會顯示在Replay Log中。

  2. 在web_custom_request()方法前用web_reg_save_param()匹配獲取響應文字,在web_custom_request()之後用lr_message()或lr_output_message()方法打印出來。


我先用了第一種方法,結果列印的結果中文顯示亂碼,在網上搜到log亂碼一般有兩種解決方法:

  • 第一種是修改Recording Options,而我們這裡是直接傳參測試介面,沒有錄製的過程,此方法無效

  • 第二種方法是獲取響應文字,轉換編碼格式,然後打印出來,還是回到了上面的第二種獲取響應的措施;

所以我採用第二種方法,在web_custom_request()之前用關聯函式web_reg_save_param()獲取響應文字,關聯函式是一個註冊型函式,需要告訴VuGen下一個請求返回是需要被處理的,因此該函式必須寫在請求之前,否則就會出現無法獲得關聯結果的錯誤,程式碼如下:

web_reg_save_param( "response", //變數名稱
                    "LB=", //匹配格式開頭,注意其中要有 " 也必須進行轉義
                    "RB=", //匹配格式結尾,此函式會在響應中匹配LB與RB之間的內容並賦給變數,我這裡將響應文字全部輸出了
                    "NotFound=warning", //如果沒有發現,則報警告,預設報error
                    LAST);

在web_custom_request()之後,將response轉換格式並輸出,程式碼如下:

lr_convert_string_encoding(lr_eval_string("{response}"),"utf-8","gb2312","str");
lr_output_message(lr_eval_string("{str}"));

然後再次執行,就可以輸出響應內容,也沒有亂碼

將結果寫入日誌檔案

1.指令碼實現

首先根據網上找到的內容跟著進行指令碼實現,程式碼如下:

//定義要寫入的日誌,開啟檔案 
char *filename = "d:\\lr_script\\test001.log";
long file_stream;

if((file_stream == fopen(filename,"a+")) == NULL)
{
    lr_error_message("Can't open %s", filename);
    return -1;
}

//中間省略介面請求部分程式碼,見上文

lr_save_datetime("%y-%m-%d %H:%M:%S",DATE_NOW + TIME_NOW,"times");
//下面這句輸出當前引數與當前時間
fprintf(file_stream, "username = %s, password = %s , time = %s\n",lr_eval_string("{username}"),lr_eval_string("{password}"),lr_eval_string("{times}"));

//寫入獲取到的響應資料,str在上文中有定義
fprintf(file_stream,"%s\n\n\n",lr_eval_string("{str}"));
fclose(file_stream); //關閉檔案

2.深入理解

寫日誌實質上就是把一些需要分析的資訊寫入到檔案中,所以便是需要操作檔案的方法,我們可以用下面四個函式進行檔案操作:

fopen() – 開啟檔案 – fopen(FILE * stream ,const char *format,….):返回一個FILE資料型別的指標。

fscanf() – 讀檔案 – fscanf(FILE * stream ,const char *format,….):自引數stream的檔案流中讀取字串,再根據引數format字串來轉換並格式化資料。

fprintf() – 寫檔案 – fprintf(FILE stream,const char format,va_list ap):根據引數format字串來轉換並格式化資料,然後將結果輸出到引數stream指定的檔案中,直到出現字串結束(’\0’)為止。

fclose() – 關閉檔案 – fclose(FILE * stream)

發現這幾個方法與其他語言中的檔案操作幾乎大同小異,非常簡單。上面的程式碼中用到了其中的三個函式,下面舉個例子:

int MyFile;
char *ch[10];
MyFile = fopen("D:\\lr_log\\01.txt","r");
fscanf(MyFile,"%s", ch);

這是讀取字串,讀取數值型資料如下:

int MyFile;
int number;
MyFile = fopen("D:\\lr_log\\01.txt","r");
fscanf(MyFile,"%d", &number);

3.輸出當前vuser資訊

我們在controller中執行的時候會增加新增多個vuser,我們需要在輸出的時候新增上vuser的資訊,這樣才能在日誌中知道請求和響應是哪個vuser的。增加程式碼如下:

int id,scid; //定義儲存vuser資訊的2個整形變數
char *group; //定義儲存groupname

lr_whoami (&id,&group,&scid); //獲取變數

//中間省略檔案開啟,介面處理程式碼,見上文

lr_save_datetime("%y-%m-%d %H:%M:%S",DATE_NOW + TIME_NOW,"times"); //獲取當前日期時間
//下面這句輸出vuser資訊,在fclose()方法之前
fprintf(file_stream,"vuser使用者的資訊:time=%s,id=%d,group=%s,scid=%d,uname=%s\n",lr_eval_string("{times}"),id,group,scid,lr_eval_string("{uname}"));

參考資源


相關推薦

loadrunner測試介面結果寫入日誌檔案

Action()中使用web_custom_request()方法傳送請求或者F1檢視web_custom_request的使用技巧Action() { web_custom_request( "court_user", //這個是給請求起個名稱,在樹形圖中顯示,不影

loadrunner之 學習六:結果寫入日誌檔案

學習六:將結果寫入日誌檔案 1.指令碼實現 首先根據網上找到的內容跟著進行指令碼實現,程式碼如下: //定義要寫入的日誌,開啟檔案 char *filename = "d:\\lr_script\\test001.log"; long file_st

從一個檔案讀取內容計算出結果結果寫入到另一個檔案

/* * 專案根路徑下有個questions.txt檔案內容如下: 5+5 [ 5, 5] 150-25 155*155 2555/5 要求:讀取內容計算出結果,將結果寫入到results

Spark中ip對映資料應用庫二分查詢省份結果寫入mysql

def main(args: Array[String]): Unit = { val conf = new SparkConf() .setMaster("local") .setAppName(IpLocation3.getClass.getName) val sc =

Python解析csv檔案結果寫入bat檔案

            第二次感覺有很大進步,對列表使用慢慢熟悉,繼續加油。 #!/usr/bin/python # -*- coding: UTF-8 -*- import os import csv import codecs

linux重定向輸出寫入txt檔案

轉載地址:http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html 在瞭解重定向之前,我們先來看看linux 的檔案描述符。 linux檔案描述符:可以理解為linux跟蹤開啟檔案,而分配

Linux之C語言中如何丟擲異常或異常寫入日誌檔案

Linux中用C語言寫系統日誌__________________________________________________________________________________________________Author:冀博Time :2011/11/24

IO流讀取資料檔案資料寫入資料庫並記錄資料匯入日誌

流程分析: 資料型別: ROUTE_ID,LXBM,ROAD_NAME,SRC_LON,SRC_LAT,DEST_LON,DEST_LAT 10000,G50,滬渝高速,115.8605349,30.08934467,115.5437817,30.08898601 10001,G

app應用啟動測試資料寫入csv檔案

import os import subprocess import codecs import time import re from decimal import * import csv class Start_APP(object): all_info=[] def get

python檔案讀寫(從file1中讀出資料並計算然後結果寫入到file2中)

要求新建兩個檔案,file1、file2,要求開啟file1檔案,分別對每一行數字進行求和,並將每一行的結果寫在file2中。 file1: 20 30 40 20 52 63 52 52 85 52 8 456 522 25 36 85 96 74 程式原始碼: 定義一個求和函式

備註:tensorflow模型訓練時同時進行測試結果視覺化。

1、首先建立兩個placeholder,用來存放測試資料集,和標籤。 x = tf.placeholder(tf.float32, shape = [BATCH_SIZE,256,256,3]) y_ = tf.placeholder(tf.int16,shape = [

Spark Streaming之使用Spark Streaming完成詞頻統計結果寫入到MySQL資料庫中

package com.yys.spark.project import java.sql.DriverManager import org.apache.spark.SparkConf import org.apache.spark.streaming.{Seconds,

Flume實戰三A伺服器日誌實時採集到B伺服器中

架構圖: 技術選型: exec source + memory channel + avro sink avro source + memory channel + logger sink 1)server A 資料收集端 在cd $FLUME_HOME/conf vim exec

[UE4]更通用的介面UserWidget作為圖示新增到小地圖

 將圖示改成UserWidget新增到小地圖,UserWidget支援動畫特效,更豐富小地圖的功能。   一、在小地圖圖示結構體中,將Flag資料型別改成UserWidget,刪除ImageWidget(型別是Image,因為不需要了)   二、注意:動態新增UserWi

pvuv的程式碼開發及提交spark程式jar包執行讀取資料來源並結果寫入MySQL中

目錄 PvUvToMysql類 ConnectionUtils類 jdbc.properties檔案 在IDEA中打jar包的兩種方式 IDEA打jar包 IDEA中maven方式打jar包 提交spark程式ja

PostMan測試介面傳送GetPost請求

       我現在的專案開發是前後臺分離的,所以在寫介面的時候,是需要自己測試一下的,測試工具就是PostMan,第一次接觸,也是百度,檢視部落格。所以自己乾脆寫個全一點的,也讓其他人有個參考,寫的不對多多指正哈;        下面Postman工具介紹一點,簡單的大家

在xshell中執行hive sql 並結果寫入另一個txt文字中

在xshell 中進入資料夾:vi test.sql然後將要執行的sql輸入,注意開頭不能有空格寫完後按Esc鍵,輸入:x儲存並退出輸入下面程式碼:/usr/bin/beeline -u "jdbc:hive2://dsrv1.heracles.sohuno.com:1000

圖片寫入二進位制檔案再從二進位制檔案還原圖片(c++)

1 #include "string" 2 #include "iostream" 3 #include "fstream" 4 using namespace std; 5 #define MAX 20480 6 void main() 7 { 8 string sPicPat

利用HttpClient傳送post請求京東介面結果用POI匯出為 Excel表格

package com.zhongsou.demo; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.Fil

jmeter測試介面跟jenkins整合實現自動推送郵件報告

jmeter我之前沒用過,後來學習測試api,發現很方便,因而做一個記錄。 在mac上安裝jmeter,首先需要在官網下載安裝外掛,然後配置環境,為了實現跟jenkins整合,也下載了ant。環境搭建好以後,應該是這樣的狀態。 export ANDROID_HOME=/U