全部产品

Python脚本测试

更新时间:2017-02-20 22:02:44   分享:   

本文介绍了使用Appium对iOS 10设备进行功能测试的方法。

在开始前,您可以先下载本章的测试App和示例脚本

1. 配置环境

iOS 10测试的环境要求:

  • macOS 10.11.5及以上
  • Xcode 8.0及以上
  • Appium 1.6.0及以上

我们使用Appium对iOS 10及以上的设备进行功能测试。您可以查看《Appium简介》和《环境搭建》来学习Appium。

本章的示例脚本使用Python作为Appium客户端的编程语言,建议阅读安卓的《Python脚本测试》来熟悉脚本编写方式。

2. 设置Desired Capabilities

创建一个文件,名为:desired_capabilities.py。内容如下:

  1. #!/usr/bin/env python
  2. import sys
  3. def get_desired_capabilities():
  4. desired_caps = {
  5. 'platformName': 'iOS',
  6. 'platformVersion': '10.0',
  7. 'deviceName': 'iPhone 6s',
  8. 'udid': '36317c0f81086d7f4f99a9771179720b7962a2ad',
  9. 'realDeviceLogger':'/usr/local/lib/node_modules/deviceconsole/deviceconsole',
  10. 'app': '/Users/adam/iosapp.app',
  11. 'bundleId':'net.oschina.iosapp',
  12. 'newCommandTimeout': 60,
  13. 'automationName': 'Appium',
  14. 'noReset': True
  15. }
  16. return desired_caps
  17. def get_uri():
  18. return "http://localhost:56000/wd/hub"
  19. def flushio():
  20. sys.stdout.flush()

其中,realDeviceLogger参数对应的deviceconsole用于获取iOS真机的日志;若不填写app参数,则根据bundleId运行手机上已安装的应用。

3. 编写测试用例

MQC会执行用户上传的main.py,所以要创建这个入口脚本:main.py。我们以一个登录的脚本作为例子进行说明,代码如下:

  1. # -*- coding: utf-8 -*-
  2. from appium import webdriver
  3. # 引入刚刚创建的同目录下的desired_capabilities.py
  4. import desired_capabilities
  5. # 我们使用python的unittest作为单元测试工具
  6. from unittest import TestCase
  7. # 我们使用python的unittest作为单元测试工具
  8. import unittest
  9. # 使用time.sleep(xx)函数进行等待
  10. import time
  11. class MqcTest(TestCase):
  12. def setUp(self):
  13. # 获取我们设定的capabilities,通知Appium Server创建相应的会话。
  14. desired_caps = desired_capabilities.get_desired_capabilities()
  15. # 获取server的地址
  16. uri = desired_capabilities.get_uri()
  17. # 创建会话,得到driver对象,driver对象封装了所有的设备操作。
  18. self.driver = webdriver.Remote(uri, desired_caps)
  19. # 等待app完全加载
  20. time.sleep(3)
  21. # 第1个用例,如果检测到弹框,就点掉
  22. def test_case_a_dismiss_alert(self):
  23. while True:
  24. time.sleep(3)
  25. alertEle = self.driver.find_elements_by_class_name("XCUIElementTypeAlert")
  26. if alertEle:
  27. print 'find an alert'
  28. notAllowBtn = self.driver.find_element_by_xpath("//XCUIElementTypeButton[@label='不允许']")
  29. notAllowBtn.click()
  30. else:
  31. break
  32. # 第2个用例,登录
  33. def test_case_b_login(self):
  34. # 取得导航栏的左侧按钮
  35. leftBtn = self.driver.find_element_by_xpath("//XCUIElementTypeButton[@label='navigationbar sidebar']")
  36. leftBtn.click()
  37. time.sleep(3)
  38. # 点击“点击头像登录”按钮
  39. potraitEle = self.driver.find_element_by_xpath("//XCUIElementTypeStaticText[@label='点击头像登录']")
  40. potraitEle.click()
  41. time.sleep(3)
  42. # 开始登录,输入账号密码
  43. tfEle = self.driver.find_element_by_class_name("XCUIElementTypeTextField")
  44. stfEle = self.driver.find_element_by_class_name("XCUIElementTypeSecureTextField")
  45. tfEle.send_keys("mqctest".decode('UTF-8'))
  46. time.sleep(1)
  47. stfEle.send_keys("123456".decode('UTF-8'))
  48. time.sleep(2)
  49. # 点击“登录”按钮
  50. loginBtn = self.driver.find_element_by_xpath("//XCUIElementTypeButton[@label='登录']")
  51. loginBtn.click()
  52. # 等待登录成功
  53. time.sleep(5)
  54. def tearDown(self):
  55. # 测试结束,退出会话
  56. self.driver.quit()
  57. if __name__ == '__main__':
  58. try: unittest.main()
  59. except SystemExit: pass

4. 启动Appium Server

在本地的命令行中执行命令:

appium -p 56000

5. 执行测试用例

在命令行中执行命令:

python main.py -v

其中main.py就是我们刚刚创建的测试用例。

6. 提交到MQC云平台

本地测试通过之后,将main.py打包成zip文件(无需打包desired_capabilities.py),然后进入iOS功能测试,提交被测应用和打包后的脚本zip包。

本文导读目录
本文导读目录
以上内容是否对您有帮助?