安承悦读

单元测试框架总结(合集5篇)

admin
导读 unittest框架支持命令行执行测试模块、测试类甚至单独的测试方法getTestCaseNames(testCaseClass) 返回一个存出测试方法名称的序列若想同时支持Android和IOS,可选框架有Appium和Calabash,或AthRun。

单元测试框架总结 第1篇

Java

Java常见单元测试框架包括Junit、testNG

C#

C#常见单元测试框架包括NUnit

Selenium

Selenium是一个用于Web应用程序测试的工具。支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。Selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。Selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。

selenium 包括以下两部分:selenium server、 Client Libraries组成

selenium server

selenium server负责控制浏览器的行为。主要有launcher,Http Proxy,selenium core。selenium core使用Selenium Server嵌入到浏览器页面中。实质上,selenium core是由JS函数组成,这样我们可以实现用程序对浏览器进行操作。

client Libraries

编写测试用例时控制selenium server的库

下图介绍了testcase的执行过程:

执行过程

(1).测试案例(Testcase)通过Client Lib的接口向Selenium Server发送Http请求,要求和Selenium Server建立连接。

为什么要通过发送Http请求控制Selenium Server而不采用其他方式呢?从上文可以看出,Selenium Server是一个独立的中间服务器(确切地说是代理服务器),它可以架设在其他机器上!所以测试案例通过发送HTTP请求去控制Selenium Server是很正常的。

(2).Selenium Server的Launcher启动浏览器,把Selenium Core加载入浏览器页面当中,并把浏览器的代理设置为Selenium Server的Http Proxy。

(3).测试案例通过Client Lib的接口向Selenium Server发送Http请求,Selenium Server对请求进行解析,然后通过Http Proxy发送JS命令通知Selenium Core执行操作浏览器的动作。

(4).Selenium Core接收到指令后,执行操作。

(5).浏览器收到新的页面请求信息(因为在(4)中,Selenium Core的操作可能引发新的页面请求),于是发送Http请求,请求新的Web页面。

由于Selenium Server在启动浏览器时做了手脚,所以Selenium Server会接收到所有由它启动的浏览器发送的请求。

(6).Selenium Server接收到浏览器的发送的Http请求后,自己重组Http请求,获取对应的Web页面。

(7).Selenium Server的Http Proxy把接收的Web页面返回给浏览器。

Selenium2(Webdriver)

Selenium 2将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作一样。

下图介绍了Selenium2的架构:

Selenium2架构

webdriver按照server–client的经典设计模式设计

server端就是remote server,可以是任意的浏览器:我们的脚本启动浏览器后,该浏览器就是remote server,它的职责就是等待client发送请求并做出相应;

client端简单说来就是我们的测试代码:们测试代码中的一些行为,比如打开浏览器,转跳到特定的url等操作是以http请求的方式发送给被server端(也就是被测浏览器)server接受请求,并执行相应操作,并在response中返回执行状态、返回值等信息;

单元测试框架总结 第2篇

支持BDD的自动化框架比较少,可以在calabash 和 RoboSpock及Jbehave之间选择。

若想同时支持Android和IOS,可选框架有Appium和Calabash,或AthRun。

若为单元测试选择框架,可选Instrumentation或Robolectric。Robolectric实现了shadow object 类,耗时短。

单元测试框架总结 第3篇

unittest框架支持命令行执行测试模块、测试类甚至单独的测试方法

执行测试模块:python -m unittest test_module1 test_module2 ...... 也可以采用路径的方式 python -m unittest tests/,如果想用一个高级的verbosity的方式执行加上参数-v即可,例如 python -m unittest -v test_module

执行测试类:python -m unittest  

执行测试方法:python -m unittest  

如果想获取这种命令组合的help,则执行命令 python -m unittest -h 将得到如下帮助信息

如果没有传参数,那么将执行Test Discovery, 例如输入命令python -m unittest(它也等价于 python -m unittest discover)并未给他任何模块、类或者方法,那么他将做的事情便是Test Discovery

例如命令:python -m unittest discover -s project_directory -p _*_  本条命令中使用了参数 -s 和 -p ,-s表示从那个目录开始,默认为 (.), -p则表示匹配哪样的文件名,这条命令也等价于python -m unittest discover project_directory _*_

输入python -m unittest discover -h 将的到如何帮助,很清楚的写明了各参数说明

单元测试框架总结 第4篇

本文简要介绍如何快速搭建一个junit测试环境。

工具/原料

eclipse工具

junit包

方法/步骤

首先创建一个java Project;将junit包和hamcrest-core包导入到项目中

创建一个source folder 资源文件夹 test,资源文件夹和普通的文件夹区别是,资源文件夹中的java文件可以被自动编译。

在java文件中编写java代码,在test文件中创建一个与需要进行测试的java代码同包名称的文件。

junit4采用的是通过注解的方式(在方法的上面加上@)。

@Before表示在所有方法运行前运行的方法;

@After表示在所有的方法运行之后执行的方法;

@Test表示这是一个测试方法

@BeforeClass表示在这个测试类构造之前执行的方法

@AfterClass表示在这个测试类构造之后执行的方法

单元测试框架总结 第5篇

在前边的文章中,我们说到了测试集合,其中有一种方法是使用到了().loadTestsFromTestCase(TestClass),这种方式是直接loader()了测试类

实际上TestLoader还有其他的方法

loadTestsFromModule(module, pattern=None)

loadTestsFromName(name, module=None) 和loadTestsFromNames(names, module=None)

getTestCaseNames(testCaseClass) 返回一个存出测试方法名称的序列

discover(start_dir, pattern='test*.py', top_level_dir=None):这个方法我们已经用到好多次了

defaultTestLoader:他是一个TestLoader的实例,如果我们不需要定制化的TestLoader,直接使用这个即可还能必变重复创建TestLoader实例