YONGFEIUALL

izheyi.com


  • Home

  • Archives

  • Categories

  • Tags

  • About

  • Search

Robot Framework-MongoDB

Posted on 2016-05-16 | In Robot Framework |

要做API或者UI自动化,甚至于手工测试,对于测试数据的准备,我们不可能手动的一条一条添加,正好实验了一把用RF来操控MongoDB。
以下只是个简单的实验,证明能够操作MongoDB。

环境准备

从官网的Library中查找 MongoDB library,或者直接Github Robotframework-MongoDB-Library。

  1. 安装pymongo

    1
    pip install pymongo
  2. 安装Library
    You can install by pulling down source to ‘C:\Python27\Lib\site-packages’ and executing the following:

    1
    python setup.py install

数据库连接

本来对这块也不是很熟悉,之前没用过,折腾了好长时间在这个地方,按照官方的使用方法一直不成功

1
2
# Or for an authenticated connection
Connect To MongoDB admin:admin@foo.bar.org ${27017}

重新查询了pymongo和mongoClient,这里做个说明:
对于authenticated connection,用Connect To Mongodb user:password@ip/db 27017,一直报错FAIL : ValueError: Port must be an integer between 0 and 65535: password@ip/db。
这里必须要用MongoDB的URL connection scheme

数据库查询


这里验证了工作中可能要用到的两个查询关键字,有需要的话,再研究剩下的查询关键字。
Retrieve Some Mongodb Records:根据Jason文件条件在相关数据库和Collection中查询记录。记住:字符串要用双引号,单引号会报告。
Retrieve Mongodb Records With Desired Fields:查询出指定列的显示, 相当于关系Sql: select a and b from table。记住:对于指定列,常规的直接用key就好;有嵌套的,用dot连接(e.g., address.city);指定多个列,每个列之间用逗号隔开。

数据库更新


这里不做说明,会用就好了。

数据库插入

数据库删除

以上的操作,已经能满足当前工作中的需要,只做这些验证就OK了。

特别说明:
项目中实际用到的Jason文件

1
2
3
4
5
6
{
"_id" : NumberLong("444206992590551"),
"name" : "xx",
"createdId" : NumberLong("884011643699965"),
"createdDate" : ISODate("2016-05-17T00:43:43.555Z")
}

  1. 在使用的过程中,只要是用到‘_id’时,就报格式不对的错FAIL : TypeError: id must be an instance of (bytes, unicode, ObjectId), not <type 'int'>,查看了一下原码,把下面的代码注释掉就可以了。

    1
    2
    if '_id' in recordJSON:
    recordJSON['_id'] = ObjectId(recordJSON['_id'])

    把要用到的函数都一并修改掉。

  2. 还有就是时间的问题,如果不是必须的,这些字段就不要添加了。
    还有这么一种情况,必须要添加日期字段,这里就是有错误:在Json文件中只能用字符串的形式,保存到库里”createdDate” : “2016-05-20 02:48:35.620000”,但是实际上应该是”createdDate” : ISODate(“2016-05-17T03:01:23.145Z”),目前还没有找到合适的方法,比较头疼,做个标记。

Robot Framework-Restful API Testing

Posted on 2016-05-10 | In Robot Framework |

目前项目用的是SOUPUI做的API测试,但同事反映还是有诸多的问题,考虑到本组的接口不多,且没有做几个自动化的,也问了很多朋友,用RF的非常多,所以就用RF做一个简单的Demo,以后直接转移过来。

环境安装

从官网的Library中查找HTTP library (Requests),或者直接Github robotframework-requests, 按照说明安装即可。

例子实现

  1. 先把库引用进来

    1
    2
    *** Settings ***							
    Library RequestsLibrary
  2. 利用封装好的关键字来实现脚本

为了更好的理解和使用,得去学习一下 Python HTTP Requests for Humans™

这里只是个简单的使用,在以后使用的过程中,会把知识点记录下来,如果有必要。

Robot Framework-Table Handling

Posted on 2016-04-26 | In Robot Framework |

Robot Framework provide some table handling keyword, one for get cell text, rest are for check point keyword,actually, it’s not enouth for us to handle table actions in script designing.

When we use Java or other languages to design script under Selenium Webdriver, we also need to customize class to implement relevant methods, such as, getTableRowCount, clickLinkInTableCell…..

But for Robot Framework, search from Google, seems there not a good solution,think about many ways,finally, find the below method to handle table actions, maybe it’s not the best way, anyway, it’s worked.

Get Table Row Count

We can use ‘Get Matching Xpath Count’ method to get table row count.

Here, the locator is the row(tr) locator rather than table locator, and need to use xpath.

Get Row By Cell Text

Based on ‘Get Table Row Count’ keyword, use for loop to judge text in which row, to Get Row By Cell Textget current row index/number.

Click Link In Table Cell

From ‘Get Row By Cell Text’, get the current row index, then we can the link in table cell.

Example And More

  • We can use the customized method like the below way

    Notes: we will get the below error if we define locator with prefix ‘xpath=’, i am not sure why, or maybe only happened on my laptop, so please don’t use the prefix when define tr locator.
    1
    2
    3
    InvalidSelectorException: Message: The given selector xpath=//table[contains(@id, 'calendar_tableview')]/tbody/tr is either invalid or does not result in a WebElement. The following error occurred:
    InvalidSelectorError: Unable to locate an element with the xpath expression xpath=//table[contains(@id, 'calendar_tableview')]/tbody/tr because of the following error:
    TypeError: The expression cannot be converted to return the specified type

Do more jobs

We can implement more actions based on the above major implementation, such as ‘Get Table Column Count’, ‘Select Checkbox In Table Cell’, ‘Select From List In Table Cell’………

Robot Framework-基础知识学习

Posted on 2016-04-21 | In Robot Framework |

我觉得不管学什么东西,最先要知道是什么,原理是什么,能做什么,基础的操作,对于细节性的东西,技术点相关知识,可以在日后的工作中再慢慢的补充,以便形成自己的知识体系。

周末和晚上的时间,学习了一些基础知识,这里只罗列一些点,想更详细的说明和学习,就去Robot Framework官网查看User Guide

  1. Robot Framework是个什么样的框架
  2. RIDE的基本操作:各种组件的创建和脚本运行等
  3. Test Suite、Resource、Keyword之前的关系
  4. 一些主要是关键字的了解
  5. RF里的分层

对于分层,这里还是有点困惑的,有说要做到流程和数据的分离,有的说本来就是关键字驱动,直接都写到Case里就行,封装的层太多了,也不见得是个好事;有说应该分四层,或者五层,有的说三层就够了,封的多了也是麻烦。这就跟什么是测试框架这个问题一样,一百人可能就有一百种对测试框架的理解和定义。不管怎么分,分几层,对当前的项目适合,能把控的了,应该就是没有太大问题的。

但是现在对于分层,跟Team有一些不同见解:(

Robot Framework-Web测试环境

Posted on 2016-04-18 | In Robot Framework |

我们用Selenium Webdriver来进行Web测试,以下是运行环境的搭建:

Selenium2Library

如果要做Web的自动化话,需要安装Selenium的库,用以下命令pip install robotframework-selenium2library
在RIDE设计自动化的时候,先要import安装的Selenium2Library。

ExtendedSelenium2Library

Extended Selenium 2 (WebDriver) web testing library for Robot Framework,点击 Here 查看详细信息。

浏览器

对于Firefox,是默认的浏览器,我们不需要做设置就可以直接运行;但是对于IE和Chrome,我们需要下载相应的Driver做设置:

  1. 去Selenium官网
  2. 放到环境变量path路径的目录里或把他所在的目录加到path环境变量中

说明

  1. 显示“[ WARN ] Keyword ‘Capture Page Screenshot’ could not be run on failure: No browser is open”,
    遇到此问题,请打开文件浏览器至Selenium2Library的utils目录,修改其中的browsercache.py文件,将close(self)方法中的语句“browser.quit()”修改为“browser.close()”。即可解决此问题。
  2. IE浏览器
    IE页面的显示比例要为100%。

Robot Framework Enviroment Setup on Windows 32 bit

Posted on 2016-04-15 | In Robot Framework |

安装环境

Windows7 32位,Python 2.7

安装步骤

安装Python

  1. 去Python官网下载最新版本,python-2.7.11.msi。
  2. 双击默认安即可(在安装过程中记得选择:Add python.exe to Path),一路Next。

安装wxPython

  1. 去Here,wxPython2.8-win32-unicode-2.8.12.1-py27.exe,要下载unicode版本,2.8.12.1是RIDE稳定支持的版本,py27是Python2.7。
  2. 双击默认安即可,一路Next。

安装Robot Framework

  1. 因为刚安装的python自带pip,直接用些工具安装就行,
  2. 默认pip的版本低,可以通过pip install -U pip升级。
  3. 用pip install robotframework安装Robot Framework。
    注:如果安装不成功,就自己下载源码包进行安装

安装RIDE

  1. 用pip install robotframework-ride安装。

到此,基本的环境就搭建完成了。 在命令行输入ride.py就可以打开可视窗体,进行自动化设计了。

快速获得文件夹下所有文件和文件夹的名字

Posted on 2016-04-11 | In Automation Testing |

在Windows下,因为之前做QTP,是用Vbs写了一段代码,用的时候,只要指定要查找的文件夹就可以。现在发现了一个更便捷的方式,Mark一下。

只需要用下边这个批处理脚本即可:

1
dir *.* /b > list.txt

使用方法:

  1. 把此脚本文件保存为.bat文件,
  2. Copy此脚本到要查找的文件夹下,
  3. 运行此脚本文件,
  4. 查找的名称会保存到当前文件夹的’list.txt’文件中。

测试用例详细程度的一些思考

Posted on 2016-04-11 | In 测试管理 |

已经有三四年没有做过手工测试了,最近换了一个新工作,也要去做手工测试,去写用例,目前大多数的公司都是这个样子的哈。

在写用例的过程中,Team反映了这么个问题,领导要求把用例写的很细,具体到每个Step的描述,可是这样在执行的时候往往因为时间的原因而执行不完,但是领导认为不够详细的话,执行起来可能会有问题,比如让不熟悉功能的人按用例执行,问我的标准是什么?

那测试用例的标准应该是什么呢?应该详细到何种程度呢?我想这也应该是大多数测试人员所要面临的问题。

我觉得我们可以从以下几个方面来权衡:

  1. 项目的角度

    • 目标
      不管是文档还是代码,当然也包括测试用例,都要符合项目的最终目标。

    • 需求和设计会不会经常变更
      如果变更频繁的话,用例可能很快就失效,用例越详细,成本会越大。

  2. 公司流程的角度

    • 整体测试流程和要求
      公司整个测试流程上有没有相应的标准和公司内部定义的用例模板,可能也需要遵循这些标准,当然了,如果流程不合理了,也是可以进行相应更改。
  3. 测试的角度

    • 采用的测试方法
      如果是传统的开发模式,用例可以写到足够的详细,但如果要是采用的探索性测试,那就只需要测试思路就OK。

    • 测试用例的用途
      比如一些金融项目里有全职自动化组,他们不懂业务,只是根据手工测试用例来进行自动化,那用例就需要很详细,包括测试数据==,

    • 用例执行者
      对于新人,用例应该足够的详细,以确保这些人的正常工作。

    • 用例粒度
      传统的开发模式下,有的要求一个bug要对应到一个case,这就要求用例要定的很细,但是现在的开发中,是不必要这么做的,比如:对用户名的修改功能测试,我们写一个用例就可以了,没必要按正常和异常的场景来设计多个用例。

Win7查看端口号被占用

Posted on 2016-03-31 | In Automation Testing |
  1. 开始-运行输入CMD
  2. 在CMD窗口中输入netstat -aon|findstr 80,80表示要查看的端口号

    1
    2
    C:\Users\youfei.hu>netstat -aon|findstr 80
    TCP 10.24.32.104:49323 220.181.132.85:80 ESTABLISHED 3516

    说明是有程序在占有了80端口,那么是什么程序占了80端口呢?看到最右侧有占有这个程序的进程ID:3516,我们只需要查出3516是哪个程序就可以了

  3. 在CMD中继续输入以下命令:tasklist|findstr “3516”,3516就是之前的进程ID。

    1
    2
    C:\Users\youfei.hu>tasklist|findstr "3516"
    360Tray.exe 3516 Console 1 48,640 K

    可以看到3516对应的是360程序占用这个端口。

Change Win7 profession version lanuage from Chinese to English

Posted on 2016-03-31 | In Automation Testing |

新工作给了个本是中文的操作系统,工作中需要用英文的系统,重装英文的系统有点麻烦,如果是旗舰版或者企业版,可以直接从‘控制面板’的里‘显示语言’来完成这个切换工作。

我这个偏偏是专业版,以上的方式行不通,可以用下面的工具和方法来实现转换:

  1. 下载: Vistalizator.exe
  2. 下载win7相应版本英语语言包: windows6.1-kb2483139-x64-en-us_language.exe
  3. 运行Vistalizator.exe 增加语言选择
  4. 选择按装好的英文—点击‘更改语言’按钮
    此过程中可能需要安装一些用到的update
  5. 退出Vistalizator.exe
  6. 重启计算机,当前的显示语言已经切换到了english

同时也下载office2013相应的语言包,对office进行语言切换。

1…232425…40
唐胡璐

唐胡璐

i just wanna live while i am alive

393 posts
42 categories
74 tags
RSS
LinkedIn Weibo GitHub E-Mail
Creative Commons
© 2022 唐胡璐
Powered by Hexo
|
Theme — NexT.Pisces v5.1.4