Unittest和robot Framework 的区别
链接:https://www.zhihu.com/question/263687755/answer/271878708
单从做Web UI 自动化来说,这两种方案没什么区别。看个人喜好!接下来我从实现原理和优缺点两方面来介绍这两种方案。
Selenium 支持不同的编程语言,说白了就是针对不同的编程语言都写一遍API。
不理解的可以去看 selenium开源项目的目录,其中 java目录就是针对java语言的,py目录是针对python语言的,rb目录就是Ruby语言的...
那针对 robot framework的呢?
robotframework/SeleniumLibrary
在这里,不过不是由 selenium团队维护,而是由 robot framework 团队维护。
问题来了,不同的团队去写Selenium 的实现不会有偏差么?
一般不会,因为大家都遵循 WebDriver 规范。
包括浏览器厂商,以及他们自家出的浏览器驱动。所以,你才可以这么顺畅的写一遍Selenium 脚本,任意切换浏览器来执行。
所以,这两个方案的对比,重点是 unittest 单元测试框架和 robot framework 框架的对比!题主问到点上了,说明对这两个工具还是有所了解的。(不过,你的unittest单词拼错了噢!哈哈!)
unittest 是基于Python的单元测试框架,所以,本质上在使用它的时候,写的还是Python语言。
from selenium import webdriver import unittest class MyTest(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.base_url = "https://www.baidu.com" def test_baidu(self): driver = self.driver driver.get(self.base_url) driver.find_element_by_id("kw").send_keys("selenium") driver.find_element_by_id("su").click() def tearDown(self): self.driver.quit() if __name__ == "__main__": unittest.main()
这里贴了一个用unittest + selenium写UI 自动化测试的demo,你可以感受一下它有语法。
优点:
灵活,只要你懂Python开发,想怎么玩就怎么玩。想实现什么功能就实现什么功能(自动发邮件,定时任务...)。
缺点:
学习成本高,我们写的UI自动化项目也是项目啊。开发考虑的问题,我们也需要,比如封装,设计模式等。
什么都要自己来,如果你想生成HTML格式的报告,还需要去找HTMLTestRunner这样扩展。
robot framework也是基于Python的一个测试框架,不过,它是专门为了解决自动化问题而生的。并且,它封装了一套自己的语法。
*** Settings *** Library SeleniumLibrary *** Test Cases *** Baidu search case Open Browser http://www.baidu.com chrome Input text id=kw robot framework click button id=su close Browser
这里贴一个robot framework + seleniumLibrary 写的UI 自动化测试的的demo。你可以再来感受一下。
优点:
1、不需要懂编程也可以用。
2、有丰富的测试库:AutoItLibrary,AppiumLibrary,HTTP library (Requests) ... ,所以,满足了主流的各种自动化测试需求。
3、实再满足不了测试需求,只要你懂Python,也可以自己去开发关键字来用。
4、便于团队推广,不是所有测试团队都懂编程的,也不是每个测试都对技术有追求的。这个时候,只要团队中有一个人懂python开发robot famework 关键字,其它人会关键字就可以。
5、集成了非常棒的HTML测试报告,还带错误截图噢!
缺点:
1、一样有学习成本。robot framework 也不带录制功能;不是录个脚本随便跑的那种。
2、robot framework 目前对Python3 的支持性不好,主要是它的扩展库的问题。
3、我不太喜欢 robot framework的语法(我说的是我)。
链接:https://www.zhihu.com/question/263687755/answer/271878708
Robot Framework: 自定义自己的python库
利用Robot Framework编写测试用例,往往需要开发自己的关键字,有的关键字需要通过自己编写python代码来实现。这在rf中,就需要自己定义python库。这个过程其实不复杂,本文来介绍下。
1、在python安装目录下的 Lib\site-packages 目录下 新建一个目录,目录名就是库名,如 NewLibrary
2、在新建的NewLibrary目录下创建一个python文件,任何合法的文件名即可,扩展名为py。如:myclass.py
其内容如下
class MyClass(object): def __init__(self): pass def printMsg(self,msg): print "hello "+msg
上面代码定义了一个python类,其中除构造方法 _init_ 外,还定义了一个printMsg方法,该方法其实就是rf中的关键字,可以直接在rf中使用。下面我们介绍。
3、在新建的NewLibrary目录下创建 __init__.py 文件,文件名必须固定这样。该文件的功能,就是把关键字类暴露出来,让rf能知道。
其内容如下:
from myclass import MyClass class NewLibrary(MyClass): ROBOT_LIBRARY_SCOPE = 'GLOBAL'
4、通过前面三个步骤,一个最简单的自定义的NewLibrary库就创建好了,在rf工具中就可以使用了
1)先要导入 NewLibrary 库
2)使用关键字printMsg。需要说明的是,在rf中引用时,既可以写成 printMsg,也可写成 print msg。一般习惯用空格把单词分开。因为rf关键字不区分大小写。
*** Test Cases *** successsd print msg god printMsg ss printmsg yy
5、增加新的关键字
增加新的关键字很简单,只需在MyClass类中增加新的方法即可。如:
class MyClass(object): def __init__(self): pass def printMsg(self,msg): print "hello "+msg def join_info(self,a,b): print a+b
这里定义了 join_info方法。在rf中使用时,可以写成 join info 用空格分开。
上面介绍了最简单的自定义模块,虽然简单,但实际可以满足大部分自己开发的需求了。
https://www.cnblogs.com/51kata/p/5126227.html