python app自动化测试 入门篇

来源:互联网 发布:java debug模式 编辑:程序博客网 时间:2024/06/15 07:37

移动端的app自动化测试需要一定的开发基础才能完成,首先从环境搭建会有些繁琐,目前使用比较多的是appium配合进行自动化测试,我理解的就是appium比较小巧而能完成需求,所以比较火一些。

首先环境准备:


1.首先安装node.js

https://nodejs.org/en/ 进入官网建议下载


我记得我使用v8的时候有一个bug处理不了,建议稳定版吧。

安装完毕之后,可以查看是否成功:


2.准备android-sdk

http://pan.baidu.com/s/1cD8Ygm

下载就行了,时间会长些。

配置sdk


把sdk所处的目录下面的

D:\soft\android-windows-x86_64\sdk\tools

D:\soft\android-windows-x86_64\sdk\platform-tools

这2个加入到Path里面去


3.安装一个模拟器

模拟器可以直接下载 夜神 模拟器(直接百度 夜 即可)

也可以下载官方指定的Genymotion模拟器(百度即可)

我这里使用的是Genymotion模拟器


模拟器启动之后,使用adb命令之后就会发现这个设备,这表明已经成功了。

4.安装appium

https://bitbucket.org/appium/appium.app/downloads/



记得选择ForWindows的就行了,这是一个exe文件下载完毕,直接安装就行了,不啰嗦了。

记得配置下path变量


安装完毕之后打开是否正常:


4.安装python这个比较简单就不多说了,安装python之后装一个pip,这个上篇文章已经讲过了,pip安装完毕之后执行命令:pip install Appium-Python-Client,至此环境完毕。

这样前期的环境已经准备完毕了。

开始写测试脚本:

#!/usr/bin/python# -*- coding: UTF-8 -*-import osimport unittestfrom appium import webdriverfrom time import sleepPATH = lambda p: os.path.abspath(    os.path.join(os.path.dirname(__file__), p))class NewsTest(unittest.TestCase):    ##初始化工作    def setUp(self):        capabilities = {}        capabilities['platformName'] = 'Android'        capabilities['platformVersion'] = '5.1'        capabilities['deviceName'] = 'Android Emulator'        capabilities['appPackage'] = 'com.example.android.contactmanager'        capabilities['appActivity'] = '.ContactManager'        capabilities['app'] = PATH('./apps/ContactManager.apk')        capabilities['unicodeKeyboard'] = 'True'        capabilities['resetKeyboard'] = 'True'        driver = webdriver.Remote('http://localhost:4723/wd/hub', capabilities)        self.driver = driver    # 具体的测试用例,一定要以test开头    def test_add_contacts(self):        el = self.driver.find_element_by_accessibility_id("Add Contact")        el.click()        textfields = self.driver.find_elements_by_class_name("android.widget.EditText")        textfields[0].send_keys("Appium User")        textfields[2].send_keys("someone@appium.io")        self.assertEqual('Appium User', textfields[0].text)        self.assertEqual('someone@appium.io', textfields[2].text)        self.driver.find_element_by_accessibility_id("Save").click()    # 退出清理工作    def tearDown(self):        self.driver.quit()if __name__ == '__main__':    suite = unittest.TestLoader().loadTestsFromTestCase(NewsTest)    unittest.TextTestRunner(verbosity=2).run(suite)


这是我自己写的一个测试脚本:

#!/usr/bin/python# -*- coding: UTF-8 -*-import osimport unittestfrom Util import Utilfrom appium import webdriverfrom time import sleepPATH = lambda p: os.path.abspath(    os.path.join(os.path.dirname(__file__), p))class BaTest(unittest.TestCase):    def setUp(self):        #设置运行参数        capabilities = {}        capabilities['platformName'] = 'Android'        capabilities['platformVersion'] = '5.1'        capabilities['deviceName'] = 'Android Emulator'        capabilities['appPackage'] = 'com.yuanyou.office'        capabilities['app'] = PATH('./apps/app-release.apk')        capabilities['unicodeKeyboard'] = 'True'        capabilities['resetKeyboard'] = 'True'        driver = webdriver.Remote('http://localhost:4723/wd/hub', capabilities)        self.driver = driver        self.LIST_LATIN  = "adb shell ime set com.android.inputmethod.latin/.LatinIME"        self.LIST_APPIUM = "adb shell ime set io.appium.android.ime/.UnicodeIME"    def test_login(self):         sleep(10)         #切换输入法         os.system(self.LIST_LATIN)         #设置账号         self.driver.find_element_by_id('et_phone').send_keys('15922222222')         self.driver.find_element_by_id('et_pwd').send_keys('123456')         #点击登陆         self.driver.find_element_by_id('btn_login').click()         #切换输入法         os.system(self.LIST_APPIUM)         #模拟请假申请         list = self.driver.find_elements_by_id('work_gridview_item_LL')         list[3].click()         list1 = self.driver.find_elements_by_id("ll")         list1[0].click()    def tearDown(self):        self.driver.quit()if __name__ == '__main__':    suite = unittest.TestLoader().loadTestsFromTestCase(BaTest)    unittest.TextTestRunner(verbosity=2).run(suite)

这是一个公开的app测试脚本,对应的代码包下载:http://download.csdn.net/download/gaoxuaiguoyi/9961131




原创粉丝点击