我有一个使用RobotFramework的脚本,该脚本进行了大量的数据库测试。当前,我正在尝试添加一个新的测试用例,以从另一个Python脚本(称为raw_data.py)执行查询测试。 raw_data.py非常简单,仅包含以下代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct EntryStruct {
int data;
char *name;
} Entry;
#ifdef _MSC_VER
// define strdup on legacy systems
char *strdup(const char *s) {
size_t len = strlen(s);
char *p = (char *)malloc(len + 1);
if (p)
memcpy(p, s, len + 1);
return p;
}
#endif
void merge(Entry *output, Entry *L, int nL, Entry *R, int nR) {
int i = 0;
int j = 0;
int k = 0;
while (k < nL + nR) {
if (i < nL && (j >= nR || L[i].data <= R[j].data)) {
output[k] = L[i];
i++;
} else {
output[k] = R[j];
j++;
}
k++;
}
}
void merge_sort(Entry *entries, int n) {
if (n > 1) {
int mid = n / 2;
Entry *temp;
Entry *left = entries;
Entry *right = entries + mid;
merge_sort(left, mid);
merge_sort(right, n - mid);
temp = (Entry *)malloc(n * sizeof(Entry));
merge(temp, left, mid, right, n - mid);
for (int i = 0; i < n; i++) {
entries[i] = temp[i];
}
free(temp);
}
}
Entry Entry_create(int data, const char *name) {
Entry node;
node.name = strdup(name);
node.data = data;
return node;
}
void printArrByName(Entry *arr, int n) {
for (int i = 0; i < n; i++) {
printf("%s\n", arr[i].name);
}
}
int main(void) {
Entry *arr = malloc(5 * sizeof(*arr));
arr[0] = Entry_create(5, "abc");
arr[1] = Entry_create(6, "def");
arr[2] = Entry_create(2, "ghijk");
arr[3] = Entry_create(3, "ksdljf");
arr[4] = Entry_create(1, "lsdfjl");
merge_sort(arr, 5);
printArrByName(arr, 5);
for (int i = 0; i < 5; i++)
free(arr[i].name);
free(arr);
return 0;
}
所以我要做的是使用robotframework从上一个脚本执行结果(查询):
query_begin = """SELECT *
FROM my_Table"""
def get_queries_list(query):
result = query.replace('\n','').strip()
return result
query_result = get_queries_list(query_begin)
print(query_result)
但这给了我以下错误:
*** Settings ***
Library DatabaseLibrary
Library OperatingSystem
Library raw_data.py
Suite Setup Connect To Database pymysql ${DBName} ${DBUser} ${DBPass} ${DBHost} ${DBPort}
Suite Teardown Disconnect From Database
*** Variables ***
${DBName} myDB
${DBUser} user
${DBPass} pass
${DBHost} hostname
${DBPort} port
${Query} 'SELECT * FROM DEV.personal_tasks'
*** Test Cases ***
Compare the target data with the source data
${output}= Execute SQL String get_queries_list(query)
log to console ${output}
should be equal as strings ${output} 10
但是,关键字'Execute SQL String'已经存在...我在做什么错了?
提前谢谢!
答案 0 :(得分:1)
我认为您在Execute SQL String
和get_queries_list(query)
之间缺少至少2个空格,因此它对它进行整体评估,然后将失败并返回不存在这样的关键字的错误。
编辑:
您还需要将查询保存到变量中,然后将其传递给Execute SQL String
:
${query}= get_queries_list(query)
Execute SQL String ${query}