RobotFramework-将查询结果与另一个文件的结果进行比较

时间:2020-06-12 17:12:11

标签: python selenium robotframework

我有一个使用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'已经存在...我在做什么错了?

提前谢谢!

1 个答案:

答案 0 :(得分:1)

我认为您在Execute SQL Stringget_queries_list(query)之间缺少至少2个空格,因此它对它进行整体评估,然后将失败并返回不存在这样的关键字的错误。

编辑:

您还需要将查询保存到变量中,然后将其传递给Execute SQL String

${query}=    get_queries_list(query)
Execute SQL String    ${query}
相关问题