python接口自动化测试框架架,有没有像robotium那么智能的

推荐这篇日记的豆列
······&&国之画&&&& &&&&
版权所有 京ICP备号-2
迷上了代码!4373人阅读
Robotium是一个测试框架,能够方便你为Android应用程序编写强大、健壮的自动化黑盒测试用例。利用Robotium的支持,用例开发人员能够编写功能、系统和验收测试方案,跨越多个 Android activities。Robotium支持Activities、Dialogs、Toasts、Menus和Context Menus。
Robotium自动化测试方法能够模仿普通用户行为,可以试着把一些原来由测试工程师做的测试变成Robotium自动化实现。
&参考文档:/
Robotium 提供下列好处
1.以最小的应用程序知识,开发功能强大的测试案例。
2.框架支持多个activities 自动活动。
3.最短的时间需求写出测试用例。
4.测试案例的可读性比标准的仪器测试大大提高。
5.通过运行时绑定GUI组件使测试用例更强大。
6.执行测试用例速度快。
7.顺利整合了Maven或Ant来运行测试,持续集成的一部分。
一.& Robotium测试工程创建
1.已经安装eclipse
2.Eclipse已经配置好android相关环境
3.存在已经创建模拟器
4.存在一个编译通过的被测工程
这里以AndroidSDK/samples/android-9/NotePad为例:
在Eclipse中导入该工程 File --& New --& Project --& Android Project --& Create Project from existing source --& NotePad.
1.& 在官方down栏下下载所需要的jar包
2.创建一个Test Project
1)打开eclipse,选择File -& New -& Project… -& Android -& Android Test Project,点击Next。
2)在Test Project Name中输入测试工程的名称,如:NotePadTest。选择An existing Android Project,点击右边的Browse…按钮。
3)选择被测工程NotesList,点击OK按钮,会自动选择和输入Build Target和Properties,可以按照默认的,不用修改。
4)点击Finish按钮,一个新建的测试工程(NotePadTest)就创建好了。
3.创建一个Test Case
1)在NotePadTest -& src -& com.example.android.notepad.test上,右击选择New -& JUnit Test Case,创建一个Test Case。
2)在Name中输入Test Case的名字NotePadTest。
3)Superclass改为android.test.ActivityInstrumentationTestCase2。
4)选择创建setUp()、tearDown()和constructor后,点击Finish按钮。
4.导入robotium.jar
1)选择测试工程NotePadTest右击,选择Build Path-& Configure Build Path…
2)在打开的Properties for NotePadTest中点击Add External JARs…按钮。
3)导入本机中的robotium-solo-2.2.jar文件,击OK按钮。
5.修改java Compiler
1)选择测试工程NotePadTest右击,选择Properties -& java Compiler -& Enable project specific settings。Compiler complicance level选择1.6,点击OK按钮。
6.编写Robotium测试程序
//导入需要测试的工程
import com.example.android.notepad.NotesL
//robotium提供的测试用类
import com.jayway.android.robotium.solo.S
//测试工程要继承用来测试activity的父类
import android.test.ActivityInstrumentationTestCase2;
2)泛型写需要测试的工程的入口activity名NotesList。
publicclass NotePadTestextendsActivityInstrumentationTestCase2&NotesList&{
3)修改构造方法
public NotePadTest(String name) {
super(&com.example.android.notepad&, NotesList.class);
4) 在测试方法前覆写父类的setUp()方法:
该方法用来初始化solo,绑定对应的Activity。
protectedvoid setUp()throws Exception {
solo =new Solo(getInstrumentation(), getActivity());
5)在测试方法后覆写父类的tearDown()方法:
该方法用来清理资源垃圾,关闭activity。
protectedvoid tearDown()throws Exception {
&&& solo.finalize();
} catch (Throwable e) {
&&& e.printStackTrace();
getActivity().finish();
super.tearDown();
6)Solo类运用
Solo类中提供了自动点击、取得、拖拽、搜索等各种方法。
声明Solo类型的成员变量private S
典型方法:
①& 点击:
on a Button with a given index.
on a Button with a given text.
on a CheckBox with a given index.
on a given View.
on a View displaying a given text.
clicks on a given View.
on a RadioButton with a given index.
—Clicks on a given coordinate on the screen.
②& 取得:
the current Activity.
a TextView which shows a given text.
a View with a given id.
an EditText which shows a given text. &
an ImageView with a given index.
③& 拖拽:
—Simulate touching a given location and dragging it to a new location.
④& 搜索:
—Searches
for a text string and returns true if at least one item is found with the expected text.
—Searches
for a text string in the EditText objects located in the current Activity.
—Searches for a Button with the given text string and returns true if at least one Button is found.
更多方法请参见Solo的API文档:
7)创建需要的测试方法
可以根据不同目的编写多个测试方法。注意方法名称必须以test开头,程序运行会自动调用以test开头的方法。每次调用测试方法都会运行一次测试工程。下面是测试程序完整代码:
package com.example.android.notepad.
import android.test.ActivityInstrumentationTestCase2;
import com.jayway.android.robotium.solo.S
import com.example.android.notepad.NotesL
publicclass NotePadTestextends ActivityInstrumentationTestCase2&NotesList&{
private Solosolo;
public NotePadTest() {
super(&com.example.android.notepad&,
NotesList.class);
publicvoid setUp()throws
Exception {
&&& solo =new
Solo(getInstrumentation(), getActivity());
publicvoid testAddNote()throws Exception {
&&& solo.clickOnMenuItem(&Add note&);
//Assert that NoteEditor activity is opened
&&& solo.assertCurrentActivity(&Expected NoteEditor activity&,&NoteEditor&);
//In text field 0, add Note 1
&&& solo.enterText(0,&Note 1&);
&&& solo.goBack();//Go back
&&& solo.clickOnMenuItem(&Add note&);//Clicks
on menu item
&&& solo.enterText(0,&Note 2&);//In text field
0, add Note 2
//Go back to first activity named &NotesList&
&&& solo.goBackToActivity(&NotesList&);
boolean expected =true;
&&& boolean actual =solo.searchText(&Note
1&) &&solo.searchText(&Note 2&);
&//Assert that Note 1 & Note 2 are found
&&& assertEquals(&Note 1 and/or Note 2 are not found&, expected, actual);
publicvoid testEditNote()throws Exception {
solo.clickInList(2);// Clicks on the second list line
// Change orientation of activity
solo.setActivityOrientation(Solo.LANDSCAPE);
solo.clickOnMenuItem(&Edit title&);// Change title
solo.enterText(0,& test&);//In first text field (0), add test.
solo.goBackToActivity(&NotesList&);
boolean expected =true;
// (Regexp) case insensitive
boolean actual =solo.searchText(&(?i).*?note 1 test&);
//Assert that Note 1 test is found
assertEquals(&Note 1 test is not found&,
expected, actual);
publicvoid testRemoveNote()throws Exception
//(Regexp) case insensitive/text that contains &test&
solo.clickOnText(&(?i).*?test.*&);&&&&&
solo.clickOnMenuItem(&Delete&);&&//Delete Note 1 test
//Note 1 test & Note 2 should not be found
boolean expected =false;
boolean actual =solo.searchText(&Note 1 test&);
//Assert that Note 1 test is not found
assertEquals(&Note 1 Test is found&, expected, actual);&&&&&&&& &solo.clickLongOnText(&Note
//Clicks on Delete in the context menu
solo.clickOnText(&(?i).*?Delete.*&);
actual = solo.searchText(&Note 2&);
//Assert that Note 2 is not found
assertEquals(&Note 2 is found&, expected, actual);
publicvoid tearDown()throws Exception {
//Robotium will finish all the activities that have been open
&&& &&&solo.finalize(); &&&
&&& } catch (Throwable e) {
&&& &&&e.printStackTrace();
&&& &&&getActivity().finish();
&&& &&&super.tearDown();
7.运行测试程序
选择测试工程NotePadTest右击,选择Run As-&Android JUnit Test
以上步骤是在eclipse中进行测试的,也可以在模拟器或者手机上测试。如果需要直接在模拟器或者手机上测试,需要将测试包和被测试包改成相同的签名。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:104237次
积分:1481
积分:1481
排名:第17392名
原创:56篇
转载:20篇
(1)(1)(12)(19)(39)(4)专栏:robotium与android自动化测试 - 博客频道 - CSDN.NET
基本robotium框架进行android自动化测试,android自动化测试的探索
最新更新文章
自动化测试的意义:
        别说是外行人,即使是正在从事自动化测试工作的人来说,现在或曾经都或多或少有过这样的疑惑,辛苦写了自动化测试用例,却基本发现不了问题,其意义何在?在说明这个意义前先看下质量的定义。
质量的定义:
        维基百科中对于品质(Quality)的定义:中国大陆亦称为“质量”,可指物品的特征、品性、本质,也可指商品或服务的水准、质量。
在测试自动化的过程中,有时经常需要获取Toast的String来作检验。
在robotium中,我们知道可以通过solo.getView(&message&)方法获取Toast的TextView,然后得到其String值,那么其内部是怎么实现的呢。
首先看下我们一般是怎么调用Toast的:
Toast.makeText(getApplicationContext(), &再按一次退出程序&,...
在使用基于Instrumentation测试框架如robotium时,Test run failed: Instrumentation run failed due to 'Process crashed.'这个报错估计大多数人都遇到过,Android的应用是以Linux进程的概念在运行的,而Instrumentation与被测应用运行在同一个进程中,当被测应用的进程在Instrumentatio...
robotium框架支持WebView,在robotium中有getWebElements()、getWebElements(By by)等方法来获取android中的WebView的元素,并提供了 clickOnWebElement方法来完成点击事件.android中的原生控件是比较好获取的,那么对于WebView这个框架是怎么获取的呢。第一步:利用JS获取页面中的所有元素
对于Web网页来说,页面的访问、加载速度对于用户体验来说是很重要的,而如果把Android中的每个Activity都看成是一个页面的话,Activity的启动速度凭主观的话是较难精确衡量的,因此如果可以测试每个Activity的启动速度或者获得其它基本指标并进行日常监测那就更好了。
一、编写继承于Instrumentation类的LaunchPerformanceBase类
使用robotium进行Android应用进行自动化测试,之前用TMTS框架,但收集到的单元测试结果常常会少掉一些用例集。。穷则思变,Android的测试框架主要是通过InstrumentationTestRunner对被测应用进行控制与执行,因此可以对InstrumentationTestRunner进行扩展以完成测试结果收集,然后通过jenkins的Publish
JUnit test r...
android应用自动化过程中,会遇见需要长按并拖动的场景,例如类似UC浏览器中,长按某个导航中的图标,使其处于可移动状态,然后再将其移动到另一个地方,与其它导航图标换个位置,在robotium中有个drag(float fromX, float toX, float fromY, float toY,int stepCount)方法,但由于drag没有长按这个步骤,因此不能使应用处于可移动的状态...
好吧,标题党了~
前言:android应用的自动化测试必然会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,因此有必要能够自动获得下发的短信验证码。
主要就是实时获取短信信息。
android上获取短信信息主要有BroadcastReceiver方式与数据库方式,要实时的话就BroadcastReceiver比较方便
public class SMSReceive...
前言:android应用每当发布一个版本时,往往需要打许多的渠道包,用于不同渠道的运营推广,传统的渠道包验证往往是安装某个apk包,然后打开eclipse,运行应用,查看其中的运行日志,看发送的请求中是否带有该渠道信息。
        如此这般,若有上百个渠道包,是没可能每个包都去验证的,且若后期新增的渠道,亦还需抽空去验证下apk渠道包,虽然并不是很耗时间,但常常被这样的事打断日常工作还是会...
为什么要在Linux上构建自动化环境呢?
因为在Linux上执行速度要比在Windows快很多,以打包apk为例,至少快一倍。。。
如果公司每个版本要打几百个apk渠道包,这效率将大幅提升。
2.安装tomcat
http://tomcat.apache.org/download-70.cgi
http://ant.apache...
TMTS是淘宝的自动化测试构架,优缺点都较为明显
优点:最主要的就是已经实现出错截屏并提供日志
缺点:比较小众化,遇到问题也无人解答
自动化测试终究是要能够持续集成才能有更大的意义的,利用robotium+jenkins可以实现集成测试,但此时要想得到出错截屏加日志就麻烦了。
TMTS主要由三部分组成
1.TmtsFramework进行自动化用例编写
2.TmtsToolk...
robotium测试工程打包与签名,可以用ant实现,使用ant前,需要创建build.xml文件。
robotium测试工程的打包与普通android工程的不同点在于,构建robotium测试工程前需要先构建android被测工程。
用eclipse导出的build.xml如下:
&!-- WARNING: Eclipse auto-generated file....
专栏创建者:
创建时间:
文章数:12篇
浏览量: 64048 次

我要回帖

更多关于 robotium框架 的文章

 

随机推荐