在LoadRunner中使用檔案的相關函式
在LoadRunner測試過程中,有時候需要使用檔案,可以封裝出幾個常用的檔案操作函式。
參考:
http://www.jds.net.au/tech-tips/vugen-code-snippets/
/*
Writes a string to the end of a file.
Arguments:
- file_name: Include the full path in the file name, and escape any slashes. E.g. "C://TEMP//output.txt". Note that file does not have to exist beforehand, but directory does.
- string: If attempting to write a single line, include a newline character at the end of the string.
Returns 0 on success. On failure, function will raise lr_error_message and return -1.
*/
int jds_append_to_file(char* file_name, char* string) {
int fp; // file pointer
int rc; // return code
int length = strlen(string);
// Check that file_name is not NULL.
if (file_name == NULL) {
lr_error_message("Error. File name is NULL");
return -1;
}
fp = fopen(file_name, "a"); // open file in "append" mode.
if (fp == NULL) {
lr_error_message("Error opening file: %s", file_name);
return -1;
}
rc = fprintf(fp, "%s", string);
if (rc != length) {
lr_error_message("Error writing to file: %s", file_name);
return -1;
}
rc = fclose(fp);
if (rc != 0) {
lr_error_message("Error closing file: %s", file_name);
return -1;
}
return 0;
}
//////////////////////////////////////////////////////////////////////////////////////////////
// Checks if a file already exists on the filesystem.
// Arguments:
// - file_name: Include the full path in the file name.
// Returns TRUE (1) if file exists and user has read access to the file, otherwise function returns FALSE (0).
int jds_file_exists(char* file_name) {
int fp; // file pointer
fp = fopen(file_name, "r+"); // open file in read mode. File must already exist.
if (fp == NULL) {
return FALSE;
} else {
fclose(fp);
return TRUE;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////
// Saves a file to the hard disk.
// Arguments:
// - file_name: Include the full path in the file name. Note that file must not exist before function is called.
// - file_content: The data to save to the file. Can be binary or string data.
// - file_size: The size/length of the data to save to the file. If it is string data, you can find this using strlen(). If you are saving binary data from a web page, use web_get_int_property(HTTP_INFO_DOWNLOAD_SIZE).
// Returns 0 on success. On failure, function will raise lr_error_message and return -1.
int jds_save_file(char* file_name, void* file_content, unsigned int file_size) {
int rc; // function return code
int fp; // file pointer
// Check input values
if (file_name == NULL) {
lr_error_message("File name is NULL");
return -1;
} else if (file_content == NULL) {
lr_error_message("File content is NULL");
return -1;
} else if (file_size < 1) {
lr_error_message("Invalid file size: %d", file_size);
return -1;
}
// Does the file already exist?
if (jds_file_exists(file_name) == TRUE) {
lr_error_message("File %s already exists", file_name);
return -1;
}
fp = fopen(file_name, "wb"); // open file in "write, binary" mode.
if (fp == NULL) {
lr_error_message("Error opening file: %s", file_name);
return -1;
}
rc = fwrite(file_content, file_size, 1, fp);
if (rc != 1) {
lr_error_message("Error writing to file. Items written: %d", rc);
return -1;
}
rc = fclose(fp);
if (rc != 0) {
lr_error_message("Error closing file: %s", file_name);
return -1;
}
return 0;
}
//////////////////////////////////////////////////////////////////////////////////////////////
使用的例子:
Action()
{
int is_exists=0;
char *str = "string to write!";
char *file= "D://test.txt";
is_exists = jds_file_exists( file );
//lr_save_int(is_exists,"File_Exist");
//lr_output_message(lr_eval_string("{File_Exist}"));
if(is_exists)
{
jds_append_to_file(file,str);
}
else
{
jds_save_file(file,str,strlen(str));
}
return 0;
}
在LR的幫助文件中,也有關於檔案、目錄操作函式的詳細介紹:
相關文章
- loadrunner常用函式函式
- python3 堆相關函式的使用Python函式
- 字串的相關函式字串函式
- 學習PHP中的URL相關操作函式PHP函式
- linux使用者相關檔案Linux
- 一張C/C++檔案io相關函式mode對應表C++函式
- SAP PP相關函式函式
- 物件及函式相關物件函式
- 執行緒中的幾個退出相關函式執行緒函式
- 字串相關函式的實現字串函式
- 偶函式在零點的泰勒展開式相關知識點函式
- Processing中PImage類和loadImage()、createImage()函式的相關解析函式
- Python之函式的相關介紹Python函式
- ES6 函式相關函式
- Python資料分析--Numpy常用函式介紹(5)--Numpy中的相關性函式Python函式
- 關於onethink 目錄,檔案讀寫檢測函式中的問題函式
- CodeIgniter框架之url相關函式框架函式
- Python中open函式怎麼操作檔案Python函式
- 【C語言】常用的字串函式及相關函式的自我實現C語言字串函式
- 【OpenCV-Python】專案中遇到的關鍵函式原理及使用簡介OpenCVPython函式
- spring boot配置檔案相關Spring Boot
- Linux檔案管理相關命令Linux
- 實驗七 檔案相關
- 關於在PostgreSQL中使用extract函式以及epochSQL函式
- C語言相關的基礎字串函式C語言字串函式
- linux使用者及組相關檔案介紹Linux
- interrupt結構體和相關函式結構體函式
- PG wal日誌LSN相關函式函式
- FreeRTOS-01-任務相關函式函式
- tensorflow相關函式學習總結函式
- 網頁中Office和pdf相關檔案匯出網頁
- 簡單的檔案快取函式快取函式
- 使用idea外掛ideolog識別log檔案的相關設定Idea
- 【DBA】Oracle 中DBA地址的檔案號使用的是相對檔案號(RELATIVE_FNO)Oracle
- Ubuntu檔案相關命令集合Ubuntu
- MPI-3 中大的計數及相關函式函式
- Win32 API CreateCompatibleDC 函式的相關應用Win32API函式
- 在 bash 中使用函式函式
- js中在一個函式中引用另一個函式中的函式,可以這麼做JS函式