@601068603 对于手机短信验证码获取不太懂,代码可以稍微该下。本地没尝试,你可以试试看哦!
def getCodeFromSms(timeout=20):
os.system("adb logcat -c")
cmd = ' adb logcat -d |findstr D/Mms/Txn'
n = 0
while n < timeout:
smscode = os.popen(cmd).read()
print(smscode)
if smscode != " ":
smscode = smscode.split("验证码:")[1].split(",")[0]
print("code is {}:".format(smscode))
break
else:
time.sleep(1)
n += 1
print('已等待:{}秒'.format(n))
continue
print('短信接收失败!')
自己理解的 PO 设计模式,大概这样:
1.元素定位
elements.py
def find_element(*loc):
return driver.find_element(*loc)
def send_params(value,ipt_element):
return ipt_element.send_keys(value)
def click_btn(*loc):
return driver.find_element(*loc).click()
2.定位器
单独写在配置文件中,yaml,xml,ini,config 等
locators.py
login_username = (By.ID,'username')
search_btn = (By.ID,'search')
.....
3.每个页面封装该 page 经常使用到的元素或操作
例如首页搜索功能
homePage.py
def search_action(value):
search_ipt = find_element(locators.search_ipt)
search_btn = find_element(locators.search_btn)
send_params(value,search_ipt)
click_btn(search_btn)
return value in driver.page_source
例如购物车页面的立即结算按钮
buyCartPage.py
def order_cart():
click_btn(find_element(*loc))
4.测试用例
testCase.py
def test_search( ):
assertTrue search_action()
def test_order_placing():
....
add_cart()
....
#点击结算
order_cart()
....
assertTrue('success' in page)
以上代码写的粗略,主要表达设计思路,感觉 PO 的设计就是层层递进。
好处就是尽可能把易变的东西分离出来,以保证整体稳定性。谢谢
点击 Tools→View RIDE log ,查看下报错信息。
别因为争论影响了工作心情啊,很少能看到这种盛况→测试技术人在 TesterHome 争论的面红耳赤,可能对于二位不太好把,但是对于大部分人来说,学到了很多,总之我是学到挺多的!最简单的方法→列个条目 1、2、3 一次只回答一条,1 条没结束讨论,就不开始下一条。
看到题主关于自动化的分享, 有几个延伸问题,自己在工作中一直思考,但是一直没有找到合适的答案。
接口自动化和 UI 自动化的用例是完全重新设计,还是从业务用例中筛选?IF 从业务用例中筛选的话,筛选的标准有哪些呢?(PS:接口用例中的接口参数类型的用例设计,暂不考虑)
接口自动化和 UI 自动化,互相之间有影响吗?或者说接口覆盖的用例和 UI 覆盖的用例之间是否有某种关联?IF 有关联,请问需要多大粒度的关联比较合适?ELIF 没关联,请问两者之间各自为战吗?(PS:这样会不会导致测试覆盖率重复呢?)
如果 UI 层的用例 Faile,是不是需要定位到对应的接口层?相反,接口层用例 faile,是否需要定位到 UI 层,IF 以上需要,如何有效关联呢?Or 是否需要在分层测试的工程中,让他们互相成为彼此的辅助?
#4 楼 @Tank007
应该不是实例化了 2 次哦,单例是实例化对象在内存中的地址是同一个地址。
单例模式的_new() 方法是在__init_() 之前被调用
cls.instance.logger = logging.getLogger(cls.instance.logger_name)
这行代码在运行的时候,相当于 cls.instance 已经有一个类属性 logger
当你在初始化实例时,并调用 get_logger() 方法时,实际上
logsignleton = LogSignleton(conf_path)
又返回了一个 logger 对象。
所以你在使用的时候,logger.debug('向右滑动') 就返回两次输出。一个是类实例的输出,一个是类本身的属性输出。
修改下 get_logger 方法:
def get_logger(self,logger_name):
return logging.getLogger(logger_name)
# 这行注释掉试试看:
ls.instance.logger = logging.getLogger(cls.instance.logger_name)
以上是猜测,未做本地验证,不知道 debug 的对不对,若错误了,请指出,谢谢
提一个小小小的建议啊 ,python @classmethod 装饰的函数,一般第一个参数是用 cls。不建议使用 self 哦,sorry。
@classmethod
def setUpClass(self):
self.driver = WebDriver(desired_caps, server_url)
self.driver.init()
@nancy2896 ‘’ 导入文档控件 filePicker,没有类似 input type='text' 的属性,虽然你定位到了这个元素,但是后续的 send_keys() 方法,找不到输入框,所以提示你无法获得焦点的啊。
#7 楼 @chenhengjie123 恩恩,已看,谢啦。
@ycwdaaaa 支持你。人天生有惰性,工作时间久了,混日子也就慢慢培养出来。像你这样的负责和热心很少了,很多评论可能都是仅仅针对你的内容,换个角度看,可能更容易理解你的想法!
各位学接口自动化的时候除了语言要学,还需要学哪些知识?怎么整合在一起去实践的?
说下自己的 web 接口自动化测试的学习经历,提供一些参考。
首先清楚接口测试的目的是什么?有目的性不会让自己在测试的过程中迷茫。
接口测试个人的理解是为了验证在 UI 层测试时,无法触及到的一些深层次的测试点,还是归结到 “功能测试”。保证后端或者外部提供的接口调用时的正确性,当然还可以做一些性能方面的测试。
为保证以上的接口测试目的性,需要业务验证,构造请求,断言响应,为满足以上 3 个需求,了解接口实现的业务,” 请求方法,请求参数。请求字段,通用字段,响应字段,响应解析等等 http 协议相关方面的知识,推荐可以看下《图解 HTTP》或《HTTP 权威指南》
了解基础知识后,需要知道接口如何工作的,例如前端的一个 submit 按钮,点击提交后调用http://www.xxxxx.com/api/case/add?data=response 给客户端。{}接口,会把用户录入的文字作为接口参数传递给服务器端程序,后端会对传递的参数处理后写入到数据库,并返回一个
找到一个接口自动化的工具,例如 python 中的 urllib,urllib2,requests(建议 requests),熟悉 requests 的文档。了解 api 的使用,例如 get,post,图片上传,流式上传,提交 cookies,会话对象等等。
最后就是所学在实际中使用,可以在平时生活中,练习爬虫,工作中,可以向开发要接口文档,自己尝试写下,不懂的随时问开发,大部分开发还是很乐意帮助的。
当然还有一些需要知道的,fiddler,chrome 开发着工具,firebug,数据库相关的等等。
以上就是最近接口测试中的一些总结,还有很多不足或遗漏的地方,大家一起努力。
hi,遇到一个问题。
<h3 class="title" onclick="javascript:set_map_data('http://www.xxxxx.com');"></h3>
请问下类似这种 js 跳转的链接,应该如何检测呢?
功能性:
1:检查是否以实际价格的 20% 购入
2:检查是否每个人限制为 1 张,如果一个人买 2 张的话是否可以通过验证
3:检查上限 1000 张全部售出验证是否还可以继续购买
4:因为是移动 APP 的一个活动,应该是H5的页面,需要要考虑该方面的检查
①:前端是否可以实时刷新
②:前端提示是否友好,例如:“提示一个用户只可以购买一张” 或 “已全部售罄” 等等
③:既然是活动,考虑活动时间范围检查。
兼容性:
1:在不同设备,不同系统,不同系统版本该 “活动” 的兼容性检查
性能:
1:考虑并发,高峰等测试(性能不熟悉)等等把
2:加载H5页面的时间。
可靠性检查
1:模拟monkey测试10000次检查活动页面的可靠性
服务器端检查
1:活动相关接口性能,接口的响应时间,平均时间等等
2:检查前端提交的表单数据,数据方面的检查(具体没做过,不太清楚,但是我想应该考虑下数据方面)
专项测试:
1:该活动界面的 CPU,GPU,耗电量,流量消耗检查等等
2:弱网络,不同网络 wifi,3G ,4G 浏览的情况
3:断网情况下的检查
4:提交按钮双击检查。
5:最好做下 fiddler 的抓包,篡改数据后重新发包,看后端的处理。
体验检查:
因为是一个电影 app 的售票活动,用户应该基本是青年
所以考虑,界面的交互是否简单,提示是否友好,界面设计是否美观大方等等
ps:自己花费 10 分钟不到,随便写的,主要锻炼下自己的用例策略设计思维,写的烂或者不对的地方,请指出。谢谢
每个优秀的人,都有一段沉默的时光。那段时光,是付出了所有努力,忍受孤独和寂寞,不抱怨不诉苦,日后说起时,连自己都能被搞感动的日子.
恭喜
= = !