基于Python+UIautomation的WindowsGUI智能化测试实战 (基于python的毕业设计论文)
本文目录导航:
基于Python+UIautomation的WindowsGUI智能化测试实战
1 测试需求模拟用户操作,关上记事本启动内容输入2 测试步骤2.1 用例1关上记事本;窗口最大化;输入人生苦短,我用Python!;封锁窗口;不保留间接分开。2.2 用例2关上记事本;窗口最大化输入:Python之禅!柔美胜于奇丑(Python 以编写柔美的代码为指标)明了胜于艰涩(柔美的代码应当是明了的,命名规范,格调相似)繁复胜于复杂(柔美的代码应当是繁复的,不要有复杂的外部成功)复杂胜于混乱(假设复杂无法防止,那代码间也不能有难懂的相关,要坚持接口繁复)扁平胜于嵌套(柔美的代码应当是扁平的,不能有太多的嵌套)距离胜于紧凑(柔美的代码有适当的距离,不要奢望一行代码处置疑问)可读性很关键(柔美的代码是可读的)即使假借特例的适用性之名,也无法违反这些规定(这些规定至高无上)不要容纳一切失误,除非你确定须要这样做(精准地捕捉意外,不写 except:pass 格调的代码)当存在多种或许,不要尝试去猜想而是尽量找一种,最好是惟逐一种显著的处置打算(假设不确定,就用穷举法)只管这并不容易,由于你不是 Python 之父(这里的 Dutch 是指 Guido )做兴许好过不做,但不假考虑就入手还不如不做(入手之前要细思量)假设你无法向人形容你的打算,那必需不是一个好打算;反之亦然(打算测评规范)命名空间是一种绝妙的理念,咱们应当多加应用(提倡与召唤)
如何用python做智能化测试
用python做智能化测试,关键是接口测试和UI智能化测试。
一、接口测试:http协定的举例:可以用python自带的urllib\urllib2模拟,模拟前端向主机发送数据,失掉前往值后,启动校验和判别来启动接口测试。
网上的例子也比拟多,这里便捷说一下,比如request中data的边界值测试、字符测试、非空为空测试等等,都可以做二、UI智能化测试: html页面(python+selenium)或许一些安卓app(python+appiun)可以用。
关键是页面元素的审核、输入等。
比如可以写一个脚本,智能登录网络页面,搜查某一个关键字,并且取得此关键字的网络搜查数量。
如何经常使用python做android的智能化测试
开局第一个便捷的Android UI智能化测试1.经常使用adb命令衔接真机或模拟器2.关上uiautomatorviewer工具3.经常使用uiautomatorviewer工具失掉运行的元素启动定位4.便捷引见unittest框架的经常使用方法5.经常使用Python编写猫宁考勤运行注册模块的智能化测试1.经常使用adb命令衔接真机或模拟器:手机USB衔接电脑,进入开发者形式;cmd命令:adb devices ,检查手机能否衔接这里写图片形容显示失误这是由于adb的端口被占用,咱们须要检查是什么运行占用了这个端口(5037为adb自动端口)cmd命令 : netstat -aon|findstr “5037”这里写图片形容可以看到占用5037端口对应的程序的PID号为8388;cmd命令 : tasklist|findstr “8388”这里写图片形容可以看出8388对应的程序为,说明该程序正在经常使用5037端口;这时咱们须要在义务治理器中完结进程,按快捷键“Ctrl+Shift+Esc”调出Windows义务治理器,找到“”,单击下方的完结进程即可!这里写图片形容咱们再次运转cmd命令:adb devices这里写图片形容这一步成功后咱们能力运转sdk自带的uiautomatorviewer;咱们须要用uiautomatorviewer工具来失掉元素,用于定位。
cmd命令:uiautomatorviewer,关上uiautomatorviewer界面这里写图片形容或许找到sdk目录:sdk\tools中找到文件双击运转这里写图片形容2.关上uiautomatorviewer工具这里写图片形容咱们可以依据text,resource-id,class等元素启动定位3.经常使用uiautomatorviewer工具失掉运行的元素启动定位这里我经常使用python自带的IDLE启动编写测试脚本,关上python文件找到IDLE(python GUI)双击关上,如图:这里写图片形容4.便捷引见unittest框架的经常使用方法#-*- coding:utf-8 -*-from uiautomator import device as dimport unittestclass Mytest():#初始化上班def setUp(self):print --------------初始化上班#分开清算上班def tearDown(self):print --------------分开清算上班#测试点击猫宁考勤casedef test_login(self):d(text=猫宁考勤)()print --------------测试1#测试2def test_z(self):print --------------测试2#这里你可以写你的第二个测试用例,#测试3def test_w(self):print --------------测试3#这里你可以写你的第三个测试用例。
。
。
。
。
。
。
。
。
。
。
。
。
if __name__ == __main__()结果如下:Testing started at 21:14 …————–初始化上班————–测试1————–分开清算上班————–初始化上班————–测试3————–分开清算上班————–初始化上班————–测试2————–分开清算上班Process finished with exit code 0从结果中咱们可以看出unittest框架的运转形式为:setUp 测试1 tearDownsetUp 测试2 tearDownsetUp 测试3 tearDown5.经常使用Python编写猫宁考勤运行注册模块的智能化测试#-*- coding:utf-8 -*-from uiautomator import device as dimport timeimport unittestclass MyTestSuite():# 初始化上班def setUp(self):print --------------初始化上班# 分开清算上班def tearDown(self):print --------------分开清算上班#***************************方法**************************************# 判别控件能否存在 & textdef check_controls_exists(self, controls_text):if d(text=controls_text):return 1else:return 0# 判别按钮能否置灰 & text & clickabledef check_controls_click_text(self, controls_text):if d(text=controls_text)(clickable) is True:return 1else:return 0#assertIn(a, b) a in bdef check_ainb(self,resourceid,b):if d(resourceId=resourceid)(text) inb:return 1else:return 0#***********************************************************# 注册模块def test_Aregister(self)(2)#猫宁考勤开启全新时代(_controls_click_text(注册),1,u猫宁考勤开启全新时代)# 猫宁考勤开启全新时代--》点击注册按钮进入注册猫宁界面d(text=注册)()(3)#注册猫宁界面(_text(:id/regis_phone,请输入手机号码),1,u注册页面-》请输入手机号码)(_text(:id/regis_verifycode,请输入验证码),1,u注册页面-》请输入验证码)(_controls_click_text(失掉验证码), 0,u注册页面-》失掉验证码)(_controls_click_text(《中科爱讯服务协定》), 1,u注册页面-》《中科爱讯服务协定》)(_controls_click_text(注册), 0,u注册页面-》注册)(2)#《中科爱讯服务协定》d(text=《中科爱讯服务协定》)()(2)(_ainb(:id/title,服务协定), 1,u注册页面-》服务协定)(1)d(resourceId=:id/title_back)()(1)#手机号不输入能否能注册d(text=注册)()(3)# 手机号只输入1个数字能否能注册&只输入1个数字能否能失掉验证码d(resourceId=:id/regis_phone)_text(1)(_controls_click_text(失掉验证码), 0)(1)d(text=注册)()(1)d(resourceId=:id/regis_phone)_text()(1)#只输入5个数字能否能失掉验证码d(resourceId=:id/regis_phone)_text()(_controls_click_text(失掉验证码), 0)(1)d(resourceId=:id/regis_phone)_text()(1)#只输入手机号能否能注册d(resourceId=:id/regis_phone)_text(phone_number)(_controls_click_text(注册), 0)(1)d(text=注册)()(1)#输入正确的验证码&失掉验证码能否高亮d(resourceId=:id/regis_verifycode)_text(5648)(1)(_controls_click_text(失掉验证码), 1)(2)#明码只输入1个数字能否能注册&注册按钮能否高亮d(resourceId=:id/regis_pass)_text(1)d(resourceId=:id/regis_passAgain)_text(1)(1)(_controls_click_text(注册), 0,u明码只输入1个数字能否能注册)(1)d(resourceId=:id/regis_pass)_text()d(resourceId=:id/regis_passAgain)_text()(1)#输入不相反的明码能否能注册d(resourceId=:id/regis_pass)_text()d(resourceId=:id/regis_passAgain)_text()(1)(_controls_click_text(注册), 0,u输入不相反的明码能否能注册)(1)d(resourceId=:id/regis_pass)_text()d(resourceId=:id/regis_passAgain)_text()(1)#输入正确的明码能否能注册&我已赞同能否打钩d(resourceId=:id/regis_pass)_text()d(resourceId=:id/regis_passAgain)_text()(1)(_controls_click_resourceId(:id/regis_agree), 1)(_controls_click_text(注册), 1)(2)d(text=注册)()(8)except Exception, e:print uError: 注册模块有疑问\n, edef test_app():test_unit = ()test_(MyTestSuite(test_Aregister))if __name__ == __main__:# 测试()