详解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技术站