DiggerPlus 上分享一把~
收藏了~
翻译的漂亮!
每一个测试方法执行完成后强制做一些擦屁股的事情,比如关掉连接对象~
漂亮,早就应该有一个实时监控的东西了。
#2 楼 @mahuiling github 上 Appium 的 sample 目录里有一些现成的例子,从错误现象来看,应该是没有配置 capabilities 导致~
高度同意楼上,性能,压力,功能自动化还是需要自整啊~靠谱率有待考证。@monkey
#14 楼 @wangyemami 这就告诉我们:码代码时不能够忘记一些基本的细节,比如大小写敏感啥的,小失误,大影响啊~
@seveniruby 70 多页 PPT,思寒辛苦了,很是用心!
赞~
#6 楼 @seveniruby 额,OK,酱紫啊,误会意思啦......
#4 楼 @seveniruby sleep,wait "死等"神马的会不会有点被动的说~而且,假如我这个脚本的作用本身就是为了自动化验证一个业务的处理时间,中间如果出现"死等"的情况,测试结果的误差就太不可控了,实际上我们需要的是一个比较理想的处理方式:在一个可用的方法中可以设置一个超时时间,但是在不超时的情况下只要找到我要的元素或者 Activity 就应该立刻进行下面的活动,我上手 Appium 时间不长,但是我尝试使用 Selenium 的 WebDriverWait 是可以做到以上需求的,app-wait-activity 什么时候试验一把。
上来回答一下:
这件事情我感觉要从两个方面来考虑
从你的项目来看
这个项目的自动化测试研究既然开发已经在做了,那我觉得你也不用担心项目紧迫不紧迫的问题,毕竟,如果按照你描述的那样,没有一点自动化测试经验和编码基础,想要在短期内攻破这个自动化测试有点不大现实。
从你个人角度而言
如果是从来没有接触过自动化测试研究并且没有一点编码基础(如果真是你描述的那样),个人不建议直接就上手 selenium 或者 Appium,原因很简单:做技术的切忌急功近利,踏踏实实先快速找准一门编程语言进行入门是关键,既然你选择了移动端的自动化测试,那我个人建议,你可以从 JavaScript,Python,Java 这三个语言中进行选择。
Web 自动化有一些东西跟移动端的自动化是相通的。所以我个人建议你可以到 W3School 之类的网站逛一圈,常规的自动化测试中最常见的技术就是元素定位技术,如果没有一点 class , id , name , xpath 的概念,那么做好移动端的自动化测试也是不大可能的,注意,我是说真的要把这个事情做好的话。
3.有了这些基础知识之后,你可以先尝试一把 Selenium,Selenium 使用起来还算比较容易,可以尝试着先做一些简单的 web 自动化,比如自动填写一个表单,然后验证跳转页面诸如此类的例子
4.当你的 selenium 玩到一定熟练程度之后,恭喜你,你可以下载 Appium 体验移动端自动化的乐趣了,你会发现,你之前在 selenium 上锻炼到的技巧同样适用于 Appium,这是相当令人欣慰的事情,至于为什么,我就不用多说了,这也是很多人爱 appium 的理由。
5.移动端的自动化跟 web 自动化自然存在一些明显的区别,所以你还要了解一些(仅仅是了解应该就可以了)APP 开发中的常见概念,比如什么叫 Activity 等?
最后,让我们一同铭记:度娘和谷哥永远是我们最好的老师。
PS:不要忘记将折腾过程中遇到的问题拿到 TesterHome 上来,这里有好多热心的测试人。
抽空的简短回答,自知对你帮助甚微,希望楼主能够成功!
补充回答:Python 是一门高级语言,Appium 是一个移动端自动化测试框架,如果你想要打造一个符合你需求的测试框架,我个人感觉完全不是问题,因为 Python 能做的不止这些。
楼主的提问有点不明确,我能不能理解为,你想基于 Appium,然后使用 Python 完成一个自动化测试框架?如果是这样的话楼主可以尝试一下 Python 的 Nose(Test FrameWork),或者干脆用自带的 unittest,建议尝试下前者。
上面的例子是我自己测试过的,可以满足这个需求。
我感觉真实应用场景中不是等待一个 Activity 出现,而是等待 Activity 上的某一个元素出现,比如登陆完成后是否能够正确显示我要的用户名,为何不试试 selenium 自己的 WebDriverWait,他在 support.ui 下,support 下还提供了一个 expected_conditions,里面实现了很多实用的可调用类
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
........
........
........
def XXX(self)
#WebDriverWait构造方法传入两个参数,一个是当前实例的driver
#另外一个是超时时间,当然了,当WebDriverWait在当前Activity中找到你要定位的那个元素 时,他是不会去管这个超时时间的,马上就会CallBack
WebDriverWait(self.driver,10).until(EC.presence_of_element_located((By.NAME,"登 录")))
textfields=self.driver.find_elements_by_tag_name("textfield")
----------本楼绝不是广告帖,说到弱网测试,向各位朋友推荐下 WANem---------------
网络损伤模拟推荐使用塔塔开源的优秀开源镜像 WANem,灵活的路由添加模式,强大的带宽,随机丢包率,突发丢包等模拟机制,提供方便的 WEB 管理界面,能够模拟出互联网真实的损伤环境。开源地址:http://www.oschina.net/p/wanem 我个人和一个同事维护了一个该镜像的中文版本 CCWANem。
CCWANem 对基于 KNOPPIX 的 WANem 进行了汉化及优化,重新打包制成了独立的中文版镜像文件,换句话说:
不用再等官方的语言包了,这是一个独立的镜像版本,完整汉化。
WANem:
模拟常见带宽和自定义带宽
设置丢包/延时,随机丢包,突发丢包
配合各种参数
我们将其应用在了我们通信产品的弱网测试中,特别是互联网复杂环境下的模拟,WANem 都能胜任。
CCWANem 的 SF 地址以及 Wiki 上我写上了简单的使用例程
#10 楼 @wangyemami 放在 Suite 里执行调度理论上应该是没问题的,问题还是在于 Session 没有正确退出,那显然是 tearDown(self) 里面没有执行到,你的 teardown 如果真是像你在这里贴出来的那样,那就是根本没有执行到,因为 unittest 中是【tearDown】,而不是【teardown】,没有被 overrides 导致。
给力,社区做大做强,专注无线测试技术吧。