随着项目自动化深入和不断完善,大部分功能都已经能完成了自动化的操作;但是在设备添加的时候,遇到了难题。添加设备的时候mac必须是服务器设备管理中已经存在的mac地址,且是没有关联或绑定用户的设备信息。起初的想法是读取文本文件取得mac地址实现自动化操作,但是此方法也是行不通的!所以这个功能暂时没有自动化操作。后来想到可以读取数据库的查询结果,这样一来,每次添加设备的mac都可以确保是服务器上存在的,且是在用户使用设备表中是不存在的就可以。

那么该如何实现呢?

思路:

  1. 打开数据库
  2. 查询表中用户没有使用的mac
  3. 将查询结果赋值给一个变量
  4. mac地址中输入该变量

说明一下:测试环境的服务器是mysql

既然robotframework需要操作数据库,那么需要安装执行数据库的databaselibrary和pymysql。

安装databaselibrary和pymysql

通过cmd命令执行:pip install robotframework-databaselibrary

cmd命令执行:pip install pymysql

如图所示

引入DatabaseLibrary包到Robotframework

如图

使用关键字操作数据库

第一步:打开数据库

使用Connect To Database Using Custom Params关键字连接数据库,这里需要传入2个参数pymysql和连接数据库的信息,代码如下

mac地址
#从服务器上获取没有绑定或关联的设备号
Connect to database using custom params pymysql database='test_pre', user='test', password='test', host='127.0.0.1', port=3306
Connect to database using custom params pymysql database='test_sys', user='test', password='test', host='127.0.0.1', port=3306

第二步 执行sql语句

代码如下

@{result}    Query    select mac from test_pre.device_server where mac not in (select mac from device)limit 1
log @{result[0]}

第三步:关闭连接

 Disconnect From Database

代码展示如下

mac地址
#从服务器上获取没有绑定或关联的设备号
Connect to database using custom params pymysql database='test_pre', user='test', password='test', host='127.0.0.1', port=3306
Connect to database using custom params pymysql database='test_sys', user='test', password='test', host='127.0.0.1', port=3306
@{result} Query select mac from test_pre.device_server where mac not in (select mac from device)limit 1
log @{result[0]}
Disconnect From Database
${mac} convert to string @{result[0]}
log ${mac}
[Return] ${mac}

robotframework截图所示

注意

返回值@{result[0]}是list格式,后面需要使用此返回值断言的,所以需要转换格式为string,${mac} convert to string @{result[0]}

query中的sql语句,注意复制粘贴的时候空格要去掉,否则执行的时候会提示报错

这里用到了2个数据库test_pre和test_sys,其中pre中存放服务器mac地址,而test_sys存在的是用户关联或绑定的mac信息。而这里我们需要的mac是存在服务器上但是没有关联用户或绑定用户的设备信息

这样在添加用例的时候每次添加的mac都是唯一的,可以满足我们的要求了

这里mac已经封装关键字mac地址,这样我们下次直接使用关键字mac地址来生成一个新的mac地址。

robotframework自动化系统:操作mysql数据库的更多相关文章

  1. PHP操作MySQL数据库5个步骤

    PHP操作MySQL数据库一般可分为5个步骤:1.连接MySQL数据库服务器:2.选择数据库:3.执行SQL语句:4.关闭结果集:5断开与MySQL数据库服务器连接. 1.用mysql_connect ...

  2. python操作mysql数据库的相关操作实例

    python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...

  3. 转 用C API 操作MySQL数据库

    用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,“C API函数描述”. 函数 描述 mysql_a ...

  4. PHP操作mysql数据库:[2]查询数据听语音

    本文主要详细讲解如何使用php语言,对mysql数据库进行查询.添加.删除.更新等操作. 工具/原料   Macromedia Dreamweaver 8 mysql数据库,php语言 一.前言   ...

  5. Code First操作Mysql数据库

    前面博客也讲了,自己做一个网站,选用的是MVC+EF Code First+MySql+EasyUI,先说下技术选型.一.为什么选择MVC? 因为之前自己做的系统大部分是webForm,MVC的之前也 ...

  6. JDBC操作MySQL数据库案例

    JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...

  7. shell脚本操作mysql数据库

    shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改.查)等各种操作 mysql  -hhostname -Pport -uusername -pp ...

  8. Java使用Jdbc操作MySql数据库(一)

    这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...

  9. 使用node js 操作 Mysql 数据库

    使用node js 操作 Mysql 数据库 http://www.nodejs.org/ //node js 数据库操作 MySQL //使用https://github.com/felixge/n ...

  10. 批处理操作mysql数据库

    批处理操作mysql数据库 1.使用批处理自动登录mysql数据库 @echo offcd C:\program files\mysql\mysql server 5.5\binmysql -u ro ...

随机推荐

  1. zabbix杂文二

    ps1:主要是一些遇到的问题,不一定对所有人都有用... PS2:安装前就一定要去看下官方文档 PS3:安装zabbix的时候会参照这上面的 http://blog.chinaunix.net/uid ...

  2. 【NOIP2016 Day1 T2】天天爱跑步

    题目传送门:https://www.luogu.org/problemnew/show/P1600 感觉这两天在处理边界问题上有点神志不清......为了从80的暴力变成100,花了整整一个下午+一个 ...

  3. Tirp(状压DP)

    Description 有一个N*N的迷宫,其中有一些宝藏,现在,小A要从入口(1,1)出发,到达出口(N,N),每次,小A只能从当前的格子走到上下左右四个格子,为了不空手而归,小A决定要拿到所以的宝 ...

  4. Debian GNU/Linux 8.4 (jessie)编译安装php.md

    编译遇到的问题很多.网上的文章往往是记录遇到的报错,贴上对应的解决. 而实际的环境,如操作系统,安装的软件必然有差异,所以,更重要的是,如何找到解决方法(不担保按步骤做可以编译成功),并将过程自动化. ...

  5. hbase-1.2.5完全分布式部署

    详细配置参考http://abloz.com/hbase/book.html#distributed ,2.2.2.2小节 1.修改hbase-site.xml文件.添加如下配置 cluster为ha ...

  6. MQTT——编写连接报文

    笔者在上一章对连接报文进行了相关的讲解.这一章笔者想写一个连接报文的例子来加深理解.本来这一章也应该在上一章出现的.可是笔者怕太长了.不好方便阅.所以决定分俩章来.正如笔者上一章所讲的.笔者会用Net ...

  7. Linux必知必会的目录与启动过程

    第1章 /etc/目录 1.1 /etc/sysconfig/network-scripts/ifcfg-eth0 linux第一块网卡的配置文件 [root@znix ~]# cat /etc/sy ...

  8. CLR Via C#: 类型基础

    所有类型都从System.Object派生 一下两个类型定义是完全一致的 class Employee { } class Employee : System.Object { } 由于所有类型最终都 ...

  9. java中表示二进制、八进制、十进制、十六进制

    1.进制 进制是一种记数方式 ,可以用有限的数字符号代表所有的数值.由特定的数值组成. 2.进制的表现形式 二进制: 由0和1两个数字组成. 八进制: 由0-7数字组成,为了区分与其他进制的数字区别, ...

  10. PHP代码审计---基础

    PHP伪协议 PHP伪协议事实上是其支持的协议与封装协议,支持的种类有以下12种. * file:// - 访问本地文件系统 * http:// - 访问 HTTP(s) 网址 * ftp:// - ...