robotframework 远程连接数据库问题
今天在使用RF远程连接数据库时出现报错的问题,因为我发现只安装databaselibrary跟PyMsql的话,连接本地的数据库是OK的,但是如果我们的测试机性能有限,那么既要编写代码、运行测试、还有打开各种浏览器,再加上一个数据库的话就会卡的不成型,所以最好能把数据库部署到其他服务器上,这里我新部署的数据库主要用于存在测试数据,因为很多地方都需要录入数据,做成列表或者是字典每次都要修改,而且我们公司的表单很多,一个页面有50个要录入的数据,这种情况下我想到用数据库的方式,提前在数据库生成上万条不重复的数据,每次去读取一条,用完后直接在RF命令删除,这样保证测试永远不会因为数据重复报错,回到问题本质:
我遇到第一次报错如下:
No module named cryptography.hazmat,怎么办?看名字应该是说少了cryptography这个库,于是我去pipy下载这个资源包去python setup.py install的方式安装(因为我的测试机不能联网)
结果发现网上的包都不完整,还是要联网下载,这个方案PASS;
怎么办?我想到另外一种方式,我找到一个能pip上网的电脑也有python环境的,然后我用pip install cryptography ,安装完成后,我去Lib\site-packages下把刚安装的包全部选择复制(PS:怎么确定要复制哪些?最简单的办法根据修改时间,必须全部复制),估计有十多个文件,有很多库是自动安装的
把复制的文件全部考到测试机的Lib\site-packages下,然后运行cmd pip list就会发现增加了很多库,这时候我再去把做好的数据库链接脚本运行,发现还是报错,这次报错如下:
No module named six      ;这次去网上看了下有人说要安装matplotlib ;有人说要去复制文件,最后我还是在能上网的环境安装了matplotlib;pip install matplotlib ;然后拷贝到测试环境Lib\site-packages下 ,我在测试环境cmd下  python   import matplotlib   还是报错no module named six  
我去能上网环境cmd下;  python   import matplotlib  却没有报错,这时候我仔细检查了下上网环境的Lib\site-packages文件夹下,发现了这三个six.pyc,six.py,six-1.11.0.dist-info 我把这三个复制到测试环境下,在运行脚本,就发现成功了,并且从服务器数据库读出了我想要的数据。
但是这里的汉字都是显示的如下:
'\xe7\xbd\x91\xe4\xb8\x8a\xe5\xbc\x80\xe6\xa0\x87\xe7\xae\xa1\xe7\x90\x86'
这些并不是我们想要的结果,如何把这类的看似是Unicode的编码转化为我们想要的中文utf8呢
我看到的三种做法:
第一种:做法是在在pymysql 连接尾部加上charset="UTF8"即可解决:
Connect to Database pymysql basedb_dy root 密码 IP 3306 charset="UTF-8"
经过测试显示的还是u+unicode的编码,所以不推荐这个方式
第二种:直接把取出来的结果进行转化,用RF提供的Evaluate调用decode()来实现,代码如下:
${etrole}	query	select fname from etrole
${etroledecode2}	Evaluate	'${etrole[0][0]}'.decode('UTF-8')
log	${etroledecode2}
这样我们就能把这个字段转化为中文
第三种:直接二次开发写一个自己的转化关键字,或者直接在DatebaseLibrary中添加一个decode,这里推荐后者,去Python27\Lib\site-packages\DatabaseLibrary找到query.py文件,在末尾加入:
def decode(self, customstr, mode):
return customstr.decode(mode)
保存后,重启ride,调用这个decode关键字即可:
代码如下:
${etrole}	query	select fname from etrole
${etroledecode}	decode	${etrole[0][0]}	UTF-8
log	${etroledecode}		
robotframework 远程连接数据库问题的更多相关文章
- 【基于WinForm+Access局域网共享数据库的项目总结】之篇三:Access远程连接数据库和窗体打包部署
		篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ... 
- Oracle数据库的创建以及远程连接(PL/SQL Developer远程连接数据库)
		dbca: 创建数据库 netca: 创建监听程序 netmgr: 配置监听服务(将数据库服务注册到监听器上) netca 与 netmgr 两步可以直接在 ORACLE_HOME/network/a ... 
- SQL Server 2005如何远程连接数据库?
		SQL Server 2005如何远程连接数据库? 方法/步骤 1 在配置工具中的服务和远程连接的外围应用配置器 --->远程连接-->本地连接和远程连接-->同时使用TCP/I ... 
- 在本地没有安装Oracle的情况下,使用plsql远程连接数据库
		远程连接数据库的方式不止一种.这里主要写在本地没有安装Oracle的情况下,使用plsql可视化工具远程连接数据库的方式. 一.前提 首先你本地得安装有plsql工具.具体的安装步骤就不多说了. 二. ... 
- Metasploit中数据库的密码查看以及使用pgadmin远程连接数据库
		我们都知道,在msf下进行渗透测试工作的时候,可以将结果数据保存到数据库中,方便各个小组成员在渗透测试过程中的数据同步. 例如,Metasploit提供了db_nmap命令,它能够将Nmap扫描结果直 ... 
- 使用navicat  mysql 远程连接数据库
		远程连接数据库,假设两台主机上都有navicat 客户端 远程主机A ip地址:192.168.100.91 ,port 3306,数据库用户名 rootA 密码 123456A 本地主 ... 
- JDBC远程连接数据库
		使用jdbc远程连接数据库(非本地数据库)出现的问题可用的解决方法: 1.修改mysql配置文件 配置文件中注释掉 bind-address=127.0.0.1 2.修改数据库 登入mysql后,更改 ... 
- PostgreSQL - pgAdmin4远程连接数据库
		前言 PostgreSQL在安装的时候自带的pgAdmin这个可视化工具,自从将PostgreSQL9升级到了10版本后,自带的pgAdmin也从3升级到了4版本.pgAdmin4的变化非常巨大,刚接 ... 
- 使用python远程连接数据库
		根据web连接服务的原理,我们可以通过一台电脑连接我们另一台电脑上的数据库 一.开启数据库的权限1.Mysql:1)修改访问权限首先修改可以访问的ip,把‘localhost’全部修改为‘%’,打开c ... 
随机推荐
- 学习TestNG,乍暖还寒冷时
			时间:2019年2月23日,农历正月十九,星期六,天气晴,略有阳光,但下午三点多就不见阳光了. 地点:上海 昨夜雨疏风骤,浓睡不消残酒.试问卷帘人,却道海棠依旧.知否?知否?应是绿肥红瘦 是的,魔都上 ... 
- 我们一起踩过的坑----react(antd)(二)
			1.antd Upload默认值问题 需求是这样的,后台若没有图片默认值,则只有上传按钮,且只能上传一张图片:若有默认值,则显示默认头像图片, 可删除,删除之后有且只能添加一张图片,没有删除默认图片时 ... 
- rsync配置安装
			rsync安装 1.将rsync包解压,包链接: https://pan.baidu.com/s/1jHPosXC 密码: maay 2.进入rsync安装包运行命令: ./configure --p ... 
- systemverilog  soft constraint
			1.class my_item; rand bit constrainted_random; rand bit usually_one; endclass class my_generator; my ... 
- python-django(环境配置)
			1.配置虚拟环境 <1>.pip install virtualenv 安装创建虚拟环境的工具 <2>.pip install virtualenvwrappe ... 
- Linux使用yum安装JDK
			安装jdk8 检查系统是否自带open-jdk输入命令: #rpm -qa|grep java #rpm -qa|grep jdk 如果没有输入信息表示没有安装,如果安装可以输入命令:#rpm -qa ... 
- docker-2 tomcat
			启动容器命令 docker run -d -p 8080:8080 -v /root/tomcat/webapps:/usr/local/tomcat/webapps -v /root/tomcat/ ... 
- mongodb的配置文件详解()
			官方地址 https://docs.mongodb.com/manual/reference/configuration-options/#configuration-file 以下页面描述了Mon ... 
- 泡泡堂BNB[ZJOI2008]
			--BZOJ1034 Description 第XXXX届NOI期间,为了加强各省选手之间的交流,组委会决定组织一场省际电子竞技大赛,每一个省的代表队由n名选手组成,比赛的项目是老少咸宜的网络游戏泡泡 ... 
- ASCII,Unicode 和 UTF-8
			ASCII: 英文的编码方式,规定了128个字符的编码,使用了一个字节的后七位表示. Unicode : 每个国家的字符集都不同,世界上所有的字符远远超过128个.Unicode,就是一种所有符号的编 ... 
