您的位置:

Python+Appium自动化测试详解

一、Appium简介

Appium是一个开源的跨平台自动化测试工具,支持iOS、Android平台以及Windows桌面应用程序。Appium官方网站:http://appium.io/

Appium的核心是WebDriver协议,利用它可以进行自动化测试,实现设备/模拟器的操作。Appium支持用任何一种编程语言编写测试脚本,通过调用Appium提供的API,对应的脚本便可以进行自动化测试。

总体来说,使用Appium进行自动化测试有以下优点:

  • 支持多种平台,例如iOS、Android平台;
  • 不依赖于测试对象的实现技术;
  • 可以基于多个测试框架,使用任何一种编程语言编写测试脚本;
  • 提供丰富的API,方便测试脚本的编写。

二、Python和Appium的结合

Python是高级编程语言之一,它的设计目标是注重可读性、简洁明了。由于Python语言易于学习和使用,因此在自动化测试中应用非常广泛。Python语言提供了完整的测试框架,例如unittest和pytest,它们可以使得测试脚本易于编写和维护。

因此,Python和Appium的结合可以让我们更加便捷地实现移动设备的自动化测试。Python语言提供了Appium库,可以让我们利用Python语言进行Appium自动化测试。

三、Python+Appium自动化测试实践

1. 安装Appium和Python环境

安装Appium和Python环境是进行自动化测试的前提,这里不再赘述。Appium安装流程可以参考官方网站:http://appium.io/docs/en/about-appium/getting-started/?lang=en。Python安装流程可以参考Python官方网站:https://www.python.org/downloads/

2. 使用Python和Appium库实现简单的自动化测试

下面我们将通过一个简单的示例,介绍如何使用Python和Appium库实现自动化测试。在这个示例中,我们将通过Appium启动Android模拟器,并打开Calculator(计算器)应用程序,在计算器中输入两个数字并进行相加,最后验证计算器的输出结果是否符合预期。

首先,我们需要准备好以下文件:


_test.py
chromedriver.exe

其中,_test.py是测试脚本文件,该脚本实现了上述自动化测试。chromedriver.exe是Google Chrome浏览器驱动程序,用于启动Android模拟器。执行上述测试脚本之前,请确保已经安装好Java环境,并将Google Chrome浏览器驱动程序放置到环境变量中。

下面是_test.py文件的具体代码实现:


import unittest
from appium import webdriver

class TestCalculator(unittest.TestCase):

    def setUp(self):
        desired_caps = {
            "platformName": "Android",
            "deviceName": "Android Emulator",
            "appPackage": "com.android.calculator2",
            "appActivity": "com.android.calculator2.Calculator"
        }

        self.driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)

    def tearDown(self):
        self.driver.quit()

    def test_addition(self):
        first_num = self.driver.find_element_by_id("com.android.calculator2:id/digit_2")
        first_num.click()

        plus = self.driver.find_element_by_id("com.android.calculator2:id/op_add")
        plus.click()

        second_num = self.driver.find_element_by_id("com.android.calculator2:id/digit_3")
        second_num.click()

        equal = self.driver.find_element_by_id("com.android.calculator2:id/eq")
        equal.click()

        result = self.driver.find_element_by_id("com.android.calculator2:id/result")
        self.assertEqual(result.text, "5")

if __name__ == "__main__":
    unittest.main()

上面的代码实现了以下功能:

  • 启动Appium并连接到Android模拟器;
  • 打开Calculator应用程序;
  • 在Calculator中输入2+3=,并验证结果是否正确。

在执行该测试脚本之前,请确保Appium已经启动,并连接到Android模拟器。

3. 使用pytest实现Appium自动化测试

在上面的示例中,我们使用unittest框架实现了Appium自动化测试。但是,Python还提供了其他的测试框架,pytest就是其中之一。pytest是Python的一个成熟的测试框架,其特点包括易于编写、读取和维护测试用例。

下面是使用pytest框架的简单示例。在该示例中,我们将通过Appium启动Android模拟器,并打开Clock(时钟)应用程序,验证当前时间是否正确。

首先,我们需要准备好以下文件:


conftest.py
test_clock.py

其中,conftest.py文件用于配置Appium,test_clock.py文件用于编写测试用例。

conftest.py文件的配置信息如下:


from appium import webdriver

def pytest_configure(config):
    desired_caps = {
        "platformName": "Android",
        "deviceName": "Android Emulator",
        "appPackage": "com.android.deskclock",
        "appActivity": "com.android.deskclock.DeskClock"
    }

    config.driver = webdriver.Remote("http://localhost:4723/wd/hub", desired_caps)

test_clock.py文件中实现了一个简单的测试用例:


def test_check_time(pytestconfig):
    driver = pytestconfig.driver
    hour_element = driver.find_element_by_id("com.android.deskclock:id/hours")
    minute_element = driver.find_element_by_id("com.android.deskclock:id/minutes")

    current_time = time.strftime("%H:%M")
    expected_hour, expected_minute = current_time.split(":")
    expected_hour = int(expected_hour)
    expected_minute = int(expected_minute)

    assert int(hour_element.text) == expected_hour
    assert int(minute_element.text) == expected_minute

在这个测试用例中,我们查找了Clock应用中的小时和分钟元素,获取当前系统时间并比较应用程序中的元素与当前时间是否一致。

四、总结

本文详细介绍了Python+Appium自动化测试的基础知识,并通过一个简单示例介绍了如何使用Python和Appium库实现自动化测试。此外,我们还介绍了如何使用pytest框架实现Appium自动化测试。

通过Python和Appium的结合,我们可以很方便地进行移动设备的自动化测试。除此之外,Python语言提供了丰富的测试框架和应用库,可以极大地提高测试脚本的编写和维护效率。