Robot framework学习笔记(三)通过定义自己的python库链接mysql
今天看了一些链接数据库的方法,发现官网提供的DatabaseLibrary只提供了和数据库直连的方法,现实中很多公司出于安全考虑,都是通过跳板机的方式链接。(跳板机是开发者登录到网站分配给应用服务器的唯一途径。开发者必须首先登录跳板机,再通过跳板机登录到应用服务器)。
显然这个方式不行。
因为这个rf是基于python语言的,所以我们可以通过自己写第三方库封装一个方法,来实现和数据库的链接。
ride可以通过rf的添加Library来调用我们的方法。
- 第一步,搭建mysql的相关环境,比较重要的有以下几个:
这些我们可以通过pip的方式来安装
pymsql mysql-python sshtunnel
pymsql提供了一些方法来操作数据库的增删改查。
顺便可以安装rf自有的databaselibrary
- 第二步,编写链接mysql的方法
因为自己之前用python写过接口方面的自动化,这里只需修改之前的代码即可,相关踩坑点,参考本人写的另外一篇文章:
具体实现方法如下:
- 第三步,定义自己的python库
1.在python安装目录下的 Lib\site-packages 目录下 新建一个目录,目录名就是库名,如 NewLibrary
2.在新建的NewLibrary目录下创建一个python文件,任何合法的文件名即可,扩展名为py,如connectmysql.py
上面代码定义了一个python类,其中除构造方法 _init_ 外,还定义了一个print_query方法,该方法其实就是rf中的关键字(注意不要和rf中的关键字相同,否则会报错,rf中的关键字不区分大小写和_),可以直接在rf中使用。下面我们介绍。
3、在新建的NewLibrary目录下创建 __init__.py 文件,文件名必须固定这样。该文件的功能,就是把关键字类暴露出来,让rf能知道。
其内容如下:
一个最简单的自定义的NewLibrary库就创建好了,在rf工具中就可以使用
4.在rf中导入自己的库即可
在rf中可以看到自己所导入的库名已经调用的方法和参数。
如果导入失败:
1.需要自己删除自己的库
2.删除Lib\site-packages\NewLibrary的编译文件;
更改好代码后,计入所在目录,编译自己的两个文件,用命令python -m 文件名 文件名
或者删除文件后,重新启动rf
ps:如果提示"No module named xxxx",可能是自己代码写引用方法或方法名有问题。注意类名不要和文件名一样,或使用特殊关键字,如mysql
本次case如下:
*** Settings ***
Library Selenium2Library
Library DatabaseLibrary
Library NewLibrary
Library utf_8
*** Test Cases ***
test_connect
${a} print_query select * from tb_loan_person order by id limit 100
log ${a}
最终运行结果: