• Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告


    这篇文章主要介绍了Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    正文

    一、安装Python3

    直接登录Python官网https://www.python.org/,下载最新版本即可。


    然后安装的时候注意一下安装路径,比如我的安装路径D:\Python37,接下来会用到这个安装路径。

    二、安装Python3的Appium库

    打开Python安装目录,找到Scripts文件夹,点进去,示例:

    在地址栏上输入cmd,然后回车,打开控制台:

    图片

    在控制台里输入命令pip install Appium-Python-Client,然后回车

    图片

    看到下图的提示就表明安装成功了

    图片

    三、安装Android SDK
    我懒得折腾,所以就直接下载了Android Studio
    下载地址
    https://developer.android.com/studio/#downloads

    图片

    下载完成开始安装

    图片

    如果需要安装自带的模拟器,就把这一项勾选上,然后Next,接下来选择安装路径,比如我的同样放在D盘

    图片

    接下来一路Next,到了选择SDK的页面注意一下

    图片

    选择Custom,这样可以只安装自己喜欢的部分,接下来选择主题,当然这个以后可以在Android Studio里边改

    图片

    继续Next,到达定制组件页面,如下图

    图片

    设置一下SDK的安装路径,比如我的是D:\Android\SDK,接下来继续Next…finish。然后就进入了缓慢的下载环节,让它在这儿慢慢的下载吧,下载完成后就好了。我们可以进入下一节了。

    四、安装JDK
    这里我使用的是JDK8,下载地址
    https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

    接受协议,然后选择对应平台下载即可

    图片

    接下来安装过程比较简单,也是一路Next,注意选择一下安装路径,比如我的安装路径D:\Java\jdk1.8

    图片

    五、安装Appium
    官网地址 http://appium.io/

    图片

    点击下载按钮会到GitHub的下载页面,选择对应平台下载

    图片

    Windows就选这个(快捷下载)

    安装完成后,启动Appium,host和port默认的即可,然后编辑下配置信息

    图片

    图片

    然后点下边那个保存并重启的按钮,然后点第一个Start Server按钮,将会看到

    图片

    如果使用真机测试,插上手机就可以开始编写脚本测试了。但是呢,由于手边没有数据线,就采用模拟器了,所以有了下一节。

    六、安装模拟器
    这里使用的是夜神模拟器下载地址 https://www.yeshen.com/,之所以不用Android自带的,是因为记得多年前启动一次要好久,然后就再也没用过。
    这个也没有什么好说的,也是注意一下安装路径,然后一路下一步就好了。
    安装完成后要进行一下简单修改:

    打开安装目录,进入到bin目录(比如:D:\Nox\bin)

    把第三节里安装好的Android SDK里的adb.exe文件(比如我的在D:\Android\SDK\platform-tools目录下)复制到该目录覆盖掉该目录已存在的adb.exe文件

    删掉该目录的nox_adb.exe文件,再复制一份adb.exe并重命名为nox_adb.exe

    启动模拟器

    再该目录打开控制台,执行nox_adb.exe connect 127.0.0.1:62001,然后执行adb devices,看到如下信息就表示成功了

    图片

    在模拟器里安装测试apk文件,这里以一个计算器为例,直接将apk文件拖到模拟器里即可

    图片

    继续在刚刚的控制台窗口里输入aapt dump badging D:\apk\com.youdao.calculator-2.0.0.apk,其中D:\apk\com.youdao.calculator-2.0.0.apk是测试apk的完整路径。

    图片

    可以看到安装包的信息都打印出来了,记录下红框里这两个名称,待会儿写测试脚本的时候要用。
    注意,如果模拟器重启了,需要执行第5步的nox_adb.exe connect 127.0.0.1:62001 七、编写测试脚本并生成测试报告

    1.创建测试用例目录testcase,在该目录下创建test_app.py文件

    import time
    import unittest
    
    from appium import webdriver
    
    
    class MyTests(unittest.TestCase):
     # 测试开始前执行的方法
     def setUp(self):
      desired_caps = {'platformName': 'Android', # 平台名称
          'platformVersion': '4.4.2', # 系统版本号
          'deviceName': '127.0.0.1:62001', # 设备名称。如果是真机,在'设置->关于手机->设备名称'里查看
          'appPackage': 'com.youdao.calculator', # apk的包名
          'appActivity': 'com.youdao.calculator.activities.MainActivity' # activity 名称
          }
      self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps) # 连接Appium
      self.driver.implicitly_wait(8)
    
     def test_calculator(self, t=500, n=4):
      """计算器测试"""
      time.sleep(3)
      window = self.driver.get_window_size()
      x0 = window['width'] * 0.8 # 起始x坐标
      x1 = window['width'] * 0.2 # 终止x坐标
      y = window['height'] * 0.5 # y坐标
      for i in range(n):
       self.driver.swipe(x0, y, x1, y, t)
       time.sleep(1)
      self.driver.find_element_by_id('com.youdao.calculator:id/guide_button').click()
      for i in range(6):
       self.driver.find_element_by_accessibility_id('Mathbot Editor').click()
       time.sleep(1)
    
      btn_xpath = '/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.support.v4.widget.DrawerLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.LinearLayout[2]/android.widget.LinearLayout/android.widget.LinearLayout[3]/android.view.View/android.widget.GridView/android.widget.FrameLayout[{0}]/android.widget.FrameLayout'
      self.driver.find_element_by_xpath(btn_xpath.format(7)).click()
      self.driver.find_element_by_xpath(btn_xpath.format(10)).click()
      self.driver.find_element_by_xpath(btn_xpath.format(8)).click()
      time.sleep(3)
    
     # 测试结束后执行的方法
     def tearDown(self):
      self.driver.quit()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    2.创建run.py文件

    
    import os
    import time
    import unittest
    
    from HTMLTestRunner import HTMLTestRunner
    
    test_dir = './testcase'
    discover = unittest.defaultTestLoader.discover(start_dir='./testcase', pattern="test*.py")
    
    if __name__ == "__main__":
     report_dir = './test_report'
     os.makedirs(report_dir, exist_ok=True)
     now = time.strftime("%Y-%m-%d %H-%M-%S")
     report_name = '{0}/{1}.html'.format(report_dir, now)
    
     with open(report_name, 'wb')as f:
      runner = HTMLTestRunner(stream=f, title="测试报告", description="本测试报告内容包含超级计算器的简单测试")
      runner.run(discover)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    导出测试报告用到了HTMLTestRunner,但是Python3的好像有问题,在网上找了两个修改后支持Python3的, 需要的话可以在本文尾部的示例项目中下载。

    3.运行run.py文件
    等程序运行完之后即会在test_report目录下生成测试报告



    在浏览器里打开即可看到报告内容,示例


    到此,全部完成。如果有空的话可以再补充下Appium的使用,比如元素定位之类的,希望本文能帮到初学自动化测试的同学。
    项目示例下载地址 https://github.com/lixk/apptest
    艾玛,罗嗦这么多,都八点了还没吃晚饭,好饿,今天就先到这里了。


    最后

    如果你想学习自动化测试,那么下面这套视频应该会帮到你很多

    如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖....

    最后我这里给你们分享一下我所积累和整理的一些文档和学习资料,有需要直接领取就可以了!


    以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

    ​​

    ​​​​

  • 相关阅读:
    nablet Elements released处理视频的组件
    通过SSH 可以访问Ubuntu Desktop吗?
    JVM从入门到入魔,这份JVM必知必会的完整版带你彻底玩懂JVM
    Python(八十八)函数的参数传递
    go微服务框架Kratos笔记「链路追踪实战」
    SpringMVC和实际案例
    Java集合进阶
    运行时系统
    AS400 API 从零到一的整个历程
    每日一练--IT冷知识&C/C++--第二天
  • 原文地址:https://blog.csdn.net/apex_eixl/article/details/134022887