详解Appium+Python之生成html测试报告

yizhihongxing

详解Appium+Python之生成html测试报告

在使用Appium和Python进行移动端自动化测试时,我们可以使用第三方库HTMLTestRunner来生成HTML测试报告。本文将详细讲解如何使用HTMLTestRunner生成HTML测试报告,并提供两个示例。

步骤1:安装HTMLTestRunner库

在使用HTMLTestRunner库之前,我们需要安装它。您可以使用以下命令安装HTMLTestRunner库:

pip install HTMLTestRunner

步骤2:编写测试用例

以下是编写测试用例的示例代码:

import unittest
from appium import webdriver

class TestApp(unittest.TestCase):
    def setUp(self):
        desired_caps = {
            'platformName': 'Android',
            'platformVersion': '9',
            'deviceName': 'Android Emulator',
            'appPackage': 'com.example.app',
            'appActivity': 'com.example.app.MainActivity'
        }
        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

    def test_login(self):
        # 测试登录功能
        self.driver.find_element_by_id('username').send_keys('testuser')
        self.driver.find_element_by_id('password').send_keys('testpass')
        self.driver.find_element_by_id('login_button').click()

        # 断言登录成功
        self.assertTrue(self.driver.find_element_by_id('welcome_message').is_displayed())

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

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

在上面的示例中,我们使用unittest模块编写了一个测试用例。我们使用setUp()方法初始化Appium驱动,并使用test_login()方法测试登录功能。我们使用tearDown()方法在测试完成后关闭Appium驱动。

步骤3:生成HTML测试报告

以下是使用HTMLTestRunner生成HTML测试报告的步骤:

import unittest
import HTMLTestRunner
from appium import webdriver

class TestApp(unittest.TestCase):
    def setUp(self):
        desired_caps = {
            'platformName': 'Android',
            'platformVersion': '9',
            'deviceName': 'Android Emulator',
            'appPackage': 'com.example.app',
            'appActivity': 'com.example.app.MainActivity'
        }
        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

    def test_login(self):
        # 测试登录功能
        self.driver.find_element_by_id('username').send_keys('testuser')
        self.driver.find_element_by_id('password').send_keys('testpass')
        self.driver.find_element_by_id('login_button').click()

        # 断言登录成功
        self.assertTrue(self.driver.find_element_by_id('welcome_message').is_displayed())

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

if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(TestApp('test_login'))

    with open('test_report.html', 'wb') as f:
        runner = HTMLTestRunner.HTMLTestRunner(stream=f, title='App测试报告', description='测试结果如下:')
        runner.run(suite)

在上面的示例中,我们使用unittest模块编写了一个测试用例。我们使用setUp()方法初始化Appium驱动,并使用test_login()方法测试登录功能。我们使用tearDown()方法在测试完成后关闭Appium驱动。

我们使用unittest.TestSuite()方法创建一个测试套件,并使用addTest()方法将测试用例添加到测试套件中。我们使用HTMLTestRunner.HTMLTestRunner()方法创建一个HTML测试报告,并使用run()方法运行测试套件。最后,我们使用with open()语句将HTML测试报告写入到文件中。

示例1:生成多个测试用例的HTML测试报告

以下是生成多个测试用例的HTML测试报告的示例代码:

import unittest
import HTMLTestRunner
from appium import webdriver

class TestApp(unittest.TestCase):
    def setUp(self):
        desired_caps = {
            'platformName': 'Android',
            'platformVersion': '9',
            'deviceName': 'Android Emulator',
            'appPackage': 'com.example.app',
            'appActivity': 'com.example.app.MainActivity'
        }
        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

    def test_login(self):
        # 测试登录功能
        self.driver.find_element_by_id('username').send_keys('testuser')
        self.driver.find_element_by_id('password').send_keys('testpass')
        self.driver.find_element_by_id('login_button').click()

        # 断言登录成功
        self.assertTrue(self.driver.find_element_by_id('welcome_message').is_displayed())

    def test_logout(self):
        # 测试退出功能
        self.driver.find_element_by_id('logout_button').click()

        # 断言退出成功
        self.assertTrue(self.driver.find_element_by_id('login_button').is_displayed())

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

if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(TestApp('test_login'))
    suite.addTest(TestApp('test_logout'))

    with open('test_report.html', 'wb') as f:
        runner = HTMLTestRunner.HTMLTestRunner(stream=f, title='App测试报告', description='测试结果如下:')
        runner.run(suite)

在上面的示例中,我们使用unittest模块编写了两个测试用例。我们使用setUp()方法初始化Appium驱动,并使用test_login()方法测试登录功能,使用test_logout()方法测试退出功能。我们使用tearDown()方法在测试完成后关闭Appium驱动。

我们使用unittest.TestSuite()方法创建一个测试套件,并使用addTest()方法将测试用例添加到测试套件中。我们使用HTMLTestRunner.HTMLTestRunner()方法创建一个HTML测试报告,并使用run()方法运行测试套件。最后,我们使用with open()语句将HTML测试报告写入到文件中。

示例2:生成带截图的HTML测试报告

以下是生成带截图的HTML测试报告的示例代码:

import unittest
import HTMLTestRunner
from appium import webdriver

class TestApp(unittest.TestCase):
    def setUp(self):
        desired_caps = {
            'platformName': 'Android',
            'platformVersion': '9',
            'deviceName': 'Android Emulator',
            'appPackage': 'com.example.app',
            'appActivity': 'com.example.app.MainActivity'
        }
        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

    def test_login(self):
        # 测试登录功能
        self.driver.find_element_by_id('username').send_keys('testuser')
        self.driver.find_element_by_id('password').send_keys('testpass')
        self.driver.find_element_by_id('login_button').click()

        # 断言登录成功
        self.assertTrue(self.driver.find_element_by_id('welcome_message').is_displayed())

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

if __name__ == '__main__':
    suite = unittest.TestSuite()
    suite.addTest(TestApp('test_login'))

    with open('test_report.html', 'wb') as f:
        runner = HTMLTestRunner.HTMLTestRunner(stream=f, title='App测试报告', description='测试结果如下:')
        runner.run(suite, screenshot_on_failure=True)

在上面的示例中,我们使用unittest模块编写了一个测试用例。我们使用setUp()方法初始化Appium驱动,并使用test_login()方法测试登录功能。我们使用tearDown()方法在测试完成后关闭Appium驱动。

我们使用unittest.TestSuite()方法创建一个测试套件,并使用addTest()方法将测试用例添加到测试套件中。我们使用HTMLTestRunner.HTMLTestRunner()方法创建一个HTML测试报告,并使用run()方法运行测试套件。我们使用screenshot_on_failure=True参数来指定在测试失败时生成截图。最后,我们使用with open()语句将HTML测试报告写入到文件中。

总结

在本文中,我们详细讲解了如何使用HTMLTestRunner生成HTML测试报告,并提供了两个示例。这些示例代码可以帮助读者更好地理解如何使用Python和Appium进行移动端自动化测试,并选择最适合他们需求的方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Appium+Python之生成html测试报告 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • 说一说Python logging

    Python logging 是 Python 官方提供的日志模块,它可以帮助开发者更好地记录应用程序运行过程中的日志信息。下面是 Python logging 的完整攻略。 logging 模块简介 logging 模块旨在提供标准的 Python 日志记录接口。logging 模块可以将日志消息发送到多个的目的地,如控制台、文件、邮件、网络等。同时,开发…

    python 2023年6月3日
    00
  • python实现系统状态监测和故障转移实例方法

    实现系统状态监测和故障转移通常会用到Python的一些库,比如psutil和socket。完整的实现过程如下: 1. 导入必要的库 在Python中,将会用到psutil和socket两个库。可以通过pip命令来安装: pip install psutil pip install socket 然后在Python代码中导入这两个库: import psuti…

    python 2023年5月30日
    00
  • Python实现周期性抓取网页内容的方法

    Python实现周期性抓取网页内容的方法 本文将介绍如何使用Python实现周期性抓取网页内容的方法。 实现步骤 安装相关库 首先,我们需要安装以下Python库: requests:用于发送HTTP请求 BeautifulSoup4:用于解析HTML内容 schedule:用于实现定时任务 可以使用以下命令进行安装: pip install request…

    python 2023年5月14日
    00
  • pip报错“ValueError: invalid literal for int() with base 10: ‘3.3’”怎么处理?

    原因 “ValueError: invalid literal for int() with base 10: ‘3.3’” 错误通常是以下原因引起的: 版本号格式错误:如果您的版本号格式不正确,则可能会出现此错误。在这种情况下,您需要检查版本号格式是否正确。 版本号包含非数字字符:如果您的版本号包含非数字字符,则可能会出现此错误。在这种情况下,您需要删除版…

    python 2023年5月4日
    00
  • 一文详解Python中实现单例模式的几种常见方式

    一文详解Python中实现单例模式的几种常见方式 单例模式是一种常见的设计模式,它的目的是确保一个类只有一个实例,并且提供全局访问点。 在Python中,有许多不同的方法可以实现单例模式。本文将介绍其中的几种常见方式。 方法一:使用模块中的变量 在Python中,模块是一种全局变量,它只会被导入一次。因此,在模块中定义一个全局变量,即可实现单例模式。 # s…

    python 2023年5月19日
    00
  • Python实现学生成绩管理系统

    一、Python实现学生成绩管理系统 实现思路: 学生成绩管理系统是一种简单的数据库管理系统,要实现其主要分为以下几步: 创建数据库及表格。 实现添加学生信息功能。 实现添加学生成绩功能。 实现查询学生信息及成绩功能。 实现删除学生信息功能。 实现修改学生成绩功能。 创建数据库及表格 使用Python内置模块sqlite3创建一个数据库,该数据库包含学生信息…

    python 2023年5月30日
    00
  • python基础之模块的导入

    下面是关于“Python基础之模块的导入”的详细讲解,包括模块导入的方法和示例说明。 什么是模块? 在 Python 中,一个程序文件被称为模块。一个模块是一个包含 Python 定义和语句的文件,其名称以 .py 结尾。模块使我们能够组织代码,使其易于理解和使用。我们可以定义功能相似的代码块在同一个模块中,然后在我们的程序中导入它们,而不必在程序中多次重复…

    python 2023年6月3日
    00
  • 快速入门python学习笔记

    下面是“快速入门python学习笔记”的完整攻略: 快速入门python学习笔记 1. 安装Python 在开始Python编程之前,我们需要安装Python。建议使用官方网站下载并安装最新版本的Python。 2. 编写第一个Python程序 在安装好Python后,我们可以使用任意代码编辑器来编写Python程序。以下是简单的“Hello World”程…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部