我正在使用机器人框架和Pandas为产品开发数据验证框架。我通过从文件中读取配置,使用如下所示的机器人框架建立数据库连接sample.robot
-
*** Settings ***
Variables ./sample.yaml
*** Variables ***
${DB1Host} ${db1host}
${DB1Name} ${db1name}
${DB1Pass} ${db1pwd}
${DB1Port} ${db1port}
${DB1User} ${db1user}
${DB2Host} ${db2host}
${DB2Name} ${db2name}
${DB2Pass} ${db2pwd}
${DB2Port} ${db2port}
${DB2User} ${db2user}
***Keywords***
Connect To DataBase
[Documentation] Establish Connection On DataBase1
${data_base1}= Get Library Instance DB1
log to console Data_Base1 Instance : ${data_base1}
DB1.Connect To Database pymysql ${DB1Name} ${DB1User} ${DB1Pass}
${DB1Host} ${DB1Port}
log to console Connected to Data_Base1
[Return] ${data_base1}
类似地连接到第二个数据库
现在我想使用 pandas 调用另一个 python 库并执行 select query 和 dropduplicates((;
import pandas as pd
SHARING_DATA = dict()
def get_data(conn_rd,conn_sc):
global SHARING_DATA
df1= pd.read_sql("""<DB1 inner joint query>""", con=conn_rd).drop_duplicates
print(df1)
df2 = pd.read_sql("""<DB2 inner joint query> """, con=conn_sc).drop_duplicates()
print(df2)
SHARING_DATA[SUITE_NAME] = dict()
SHARING_DATA[SUITE_NAME]["df1"] = df1
SHARING_DATA[SUITE_NAME]["df2"] = df2
这样我就可以表演
1. .drop_duplicates()
2. if SHARING_DATA[SUITE_NAME]["df1"].count().equals(SHARING_DATA[SUITE_NAME]["df2"].count()):
And
3. db1-db2 = SHARING_DATA[SUITE_NAME]["df1"] .merge(SHARING_DATA[SUITE_NAME]["df2"], how='left', indicator=True)
db1-db2 = db1-db2[(db1-db2['_merge'] == 'left_only')].copy()
db1-db2 = db1-db2.drop(columns='_merge').copy()
print('STATUS : FAIL, Records missing in targetn')
print(db1-db2.head())
比较两个数据库之间的数据。如何在机器人框架中做出非常自适应的相同,或者如何在机器人框架中重用上述比较
通过将以下内容添加到测试套件的设置部分,您可以将任何 Python 库包含在机器人框架测试用例中(希望脚本与测试文件位于同一文件夹中(:
*** Settings ***
Library ${CURDIR}${/}python_script.py
如果您提供的 python 脚本以这种方式包含在内,则可以通过以下方式调用 Robot 测试用例中的任何已实现函数:
*** Test Cases ***
Call a function from the Python script
Get Data ${CONNECTION_1} ${CONNECTION_2}
您可以向 Python 函数添加更多参数,然后向Get Data
关键字添加更多关键字参数以添加功能。
如果你在Python中实现了任何东西,那么只需以解释的方式调用python函数,就可以很容易地将其转移到机器人测试套件中。我希望这个答案对您有所帮助,因为我不完全确定您正在寻找的最终结果,但它绝对有助于使 python 库适应机器人框架:)