上一篇:(五)Selenium自动化测试实战—PO模式_要开朗的spookypop的博客-CSDN博客
先看下代码的运行效果:
运行自动化测试代码
unittest是python单元测试框架,它提供了一组丰富的工具来构建和运行测试,可以满足日常做自动化测试的需求。
上一篇详细的介绍了如何用PO模式写登录功能的自动化测试代码,在上一篇的基础上,加上unittest框架,稍微改下代码:

还是上面的登录功能,封装页面元素和方法的代码不变(详细看点击顶部看上一篇,不赘述)。

LoginPage.py
- from selenium.webdriver.common.by import By
- from selenium.webdriver.support.wait import WebDriverWait
- from selenium.webdriver.support import expected_conditions
-
-
- # 登录页面
- class LoginPage(object):
- def __init__(self, driver):
- # 浏览器驱动
- self.driver = driver
- # 页面地址
- self.driver.get('http://www.softwarebox.club/pages/OnlineTools/AutoLearn')
- try:
- # 用户名输入框
- self.usernameBy = self.driver.find_element(By.ID, 'username')
- # 密码输入框
- self.passwordBy = self.driver.find_element(By.ID, 'password')
- # 登录按钮
- self.submitBy = self.driver.find_element(By.XPATH, '//*[@id="contentmain"]/section/div[2]/form/button[1]')
- except Exception as e:
- message = '元素定位失败'
- print(e)
- print(message)
-
- # 登录功能
- def login_valid(self, username, password):
- # 输入用户名
- self.usernameBy.send_keys(username)
- # 输入密码
- self.passwordBy.send_keys(password)
- # 点击登录按钮
- self.submitBy.click()
-
- # 获取页面弹窗
- def alert_message(self):
- wait = WebDriverWait(self.driver, 10)
- alert = wait.until(expected_conditions.alert_is_present())
- # 返回弹窗和弹窗信息
- return alert, alert.text
LoginCase.py
测试代码在上一篇的基础上稍稍修改下,引入unittest模块。
以test_开头的方法,是登录的测试用例。执行每个测试用例方法的时候都会先执行setUp()方法,用例结束后执行tearDown()方法。
- import time
- from Pages.LoginPage import LoginPage
- from selenium import webdriver
- from selenium.webdriver.chrome.service import Service as ChromeService
- from webdriver_manager.chrome import ChromeDriverManager
- import unittest
-
-
- class LoginCase(unittest.TestCase):
- def setUp(self) -> None:
- service = ChromeService(executable_path=ChromeDriverManager().install())
- self.driver = webdriver.Chrome(service=service)
-
- def test_login_success(self):
- # case:输入正确的用户名密码,登录成功,跳转到首页
- login = LoginPage(self.driver)
- login.login_valid('小明', '123456Xm')
- time.sleep(2)
- self.assertEqual(self.driver.current_url, 'http://www.softwarebox.club/', '页面跳转失败')
-
- def test_login_fail_username(self):
- # case:输入的用户名不存在,系统提示用户不存在'
- login = LoginPage(self.driver)
- login.login_valid('小朱', '123')
- time.sleep(2)
- alert, message = login.alert_message()
- self.assertEqual(message, '用户不存在', '弹窗信息不正确')
- # 关闭弹窗
- alert.accept()
-
- def test_login_fail_password(self):
- # case:输入的密码不正确,登录失败
- login = LoginPage(self.driver)
- login.login_valid('小明', '123')
- time.sleep(2)
- alert, message = login.alert_message()
- self.assertEqual(message, '账号或密码不正确', '弹窗信息不正确')
- # 关闭弹窗
- alert.accept()
-
- def tearDown(self) -> None:
- self.driver.quit()
main.py
创建测试用例集,将测试用例添加到用例集。
- import unittest
- from TestCase.LoginCase import LoginCase
-
-
- def suite():
- suite = unittest.TestSuite()
- suite.addTest(LoginCase('test_login_success'))
- suite.addTest(LoginCase('test_login_fail_username'))
- suite.addTest(LoginCase('test_login_fail_password'))
- return suite
-
-
- if __name__ == '__main__':
- runner = unittest.TextTestRunner(verbosity=2)
- runner.run(suite())
运行main.py,执行结果如下:
