随着项目自动化深入和不断完善,大部分功能都已经能完成了自动化的操作;但是在设备添加的时候,遇到了难题。添加设备的时候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. robotframework自动化系统:操作mysql数据库

    随着项目自动化深入和不断完善,大部分功能都已经能完成了自动化的操作:但是在设备添加的时候,遇到了难题.添加设备的时候mac必须是服务器设备管理中已经存在的mac地址,且是没有关联或绑定用户的设备信息. ...

  2. python操作mysql数据库系列-操作MySql数据库(二)

    接口测试框架层级目录结构示意图: page目录下面的mysqlTest.py:存放的是mysql的操作代码 utils目录下面的helper.py:存放的是公共的配置方法 log目录log.md:存放 ...

  3. python接口自动化(三十八)-python操作mysql数据库(详解)

    简介 现在的招聘要求对QA人员的要求越来越高,测试的一些基础知识就不必说了,来说测试知识以外的,会不会一门或者多门开发与语言,能不能读懂代码,会不会Linux,会不会搭建测试系统,会不会常用的数据库, ...

  4. python【第十二篇下】操作MySQL数据库以及ORM之 sqlalchemy

    内容一览: 1.Python操作MySQL数据库 2.ORM sqlalchemy学习 1.Python操作MySQL数据库 2. ORM sqlachemy 2.1 ORM简介 对象关系映射(英语: ...

  5. 【tips】ORM - SQLAlchemy操作MySQL数据库

    优先(官方文档SQLAlchemy-version1.2): sqlalchemy | 作者:斯芬克斯 推荐一(长篇幅version1.2.0b3):python约会之ORM-sqlalchemy | ...

  6. Robotframework使用DatabaseLibrary连接mysql数据库

    Robotframework使用DatabaseLibrary连接mysql数据库 进行数据库操作,需要安装相应的操作库.DatabaseLibrary是常用的库之一,它能兼容MySQL.Oracle ...

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

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

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

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

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

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

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

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

随机推荐

  1. 高速查询hive数据仓库表中的总条数

    Author: kwu 高速查询hive数据仓库中的条数.在查询hive表的条数,通常使用count(*).可是数据量大的时候,mr跑count(*)往往须要几分钟的时间. 1.传统方式获得总条数例如 ...

  2. 最简单的基于FFmpeg的AVDevice样例(读取摄像头)

    =====================================================最简单的基于FFmpeg的AVDevice样例文章列表: 最简单的基于FFmpeg的AVDev ...

  3. tabhost实现android菜单切换

    做APP项目已经有半个月了.慢慢地熟悉了这个开发环境和开发套路. 虽然是摸着石头过河.但也渐渐看到了水的深度! 作为一个电商项目APP,势必会涉及究竟部菜单条的功能.自己实现这个功能的过程是崎岖的,最 ...

  4. Anaconda和Pycharm安装和配置教程

    1.下载Anaconda2 (最好选Python2.7的,兼容性好点)             在官网下载:https://www.continuum.io/downloads 2.安装Pycharm ...

  5. 中断线程Interrupt()

    以下是参考<<Java多线程模式>>的 1. sleep() & interrupt() 线程A正在使用sleep()暂停着: Thread.sleep(100000) ...

  6. NameNode备份策略以及恢复方法

    一.dits和fsimage      首先要提到两个文件edits和fsimage,下面来说说他们是做什么的. 集群中的名称节点(NameNode)会把文件系统的变化以追加保存到日志文件edits中 ...

  7. weblogic启动后 登陆控制台特别慢的问题

    weblogic官方文档给出的问题原因: 江湖偏方: 修改jdk:修改$JAVA_HOME/jre/lib/security/java.security文件,替换securerandom.source ...

  8. Cache 简介

    一.什么是缓存1.Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问2.凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之 ...

  9. strong and weak 强引用和弱引用的差别

    (weak和strong)不同的是 当一个对象不再有strong类型的指针指向它的时候 它会被释放  ,即使还有weak型指针指向它. 一旦最后一个strong型指针离去 .这个对象将被释放,全部剩余 ...

  10. MFC中CAsyncSocket和CSocket

    原文链接:https://blog.csdn.net/libaineu2004/article/details/40395917 摘要部分重点: 1.CAsyncSocket类逐个封装了WinSock ...