• (六)Selenium自动化测试实战—unittest框架


    上一篇:(五)Selenium自动化测试实战—PO模式_要开朗的spookypop的博客-CSDN博客

    先看下代码的运行效果:

    运行自动化测试代码

    unittest是python单元测试框架,它提供了一组丰富的工具来构建和运行测试,可以满足日常做自动化测试的需求。

    上一篇详细的介绍了如何用PO模式写登录功能的自动化测试代码,在上一篇的基础上,加上unittest框架,稍微改下代码:

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

    LoginPage.py

    1. from selenium.webdriver.common.by import By
    2. from selenium.webdriver.support.wait import WebDriverWait
    3. from selenium.webdriver.support import expected_conditions
    4. # 登录页面
    5. class LoginPage(object):
    6. def __init__(self, driver):
    7. # 浏览器驱动
    8. self.driver = driver
    9. # 页面地址
    10. self.driver.get('http://www.softwarebox.club/pages/OnlineTools/AutoLearn')
    11. try:
    12. # 用户名输入框
    13. self.usernameBy = self.driver.find_element(By.ID, 'username')
    14. # 密码输入框
    15. self.passwordBy = self.driver.find_element(By.ID, 'password')
    16. # 登录按钮
    17. self.submitBy = self.driver.find_element(By.XPATH, '//*[@id="contentmain"]/section/div[2]/form/button[1]')
    18. except Exception as e:
    19. message = '元素定位失败'
    20. print(e)
    21. print(message)
    22. # 登录功能
    23. def login_valid(self, username, password):
    24. # 输入用户名
    25. self.usernameBy.send_keys(username)
    26. # 输入密码
    27. self.passwordBy.send_keys(password)
    28. # 点击登录按钮
    29. self.submitBy.click()
    30. # 获取页面弹窗
    31. def alert_message(self):
    32. wait = WebDriverWait(self.driver, 10)
    33. alert = wait.until(expected_conditions.alert_is_present())
    34. # 返回弹窗和弹窗信息
    35. return alert, alert.text

    LoginCase.py

    测试代码在上一篇的基础上稍稍修改下,引入unittest模块。

    以test_开头的方法,是登录的测试用例。执行每个测试用例方法的时候都会先执行setUp()方法,用例结束后执行tearDown()方法。

    1. import time
    2. from Pages.LoginPage import LoginPage
    3. from selenium import webdriver
    4. from selenium.webdriver.chrome.service import Service as ChromeService
    5. from webdriver_manager.chrome import ChromeDriverManager
    6. import unittest
    7. class LoginCase(unittest.TestCase):
    8. def setUp(self) -> None:
    9. service = ChromeService(executable_path=ChromeDriverManager().install())
    10. self.driver = webdriver.Chrome(service=service)
    11. def test_login_success(self):
    12. # case:输入正确的用户名密码,登录成功,跳转到首页
    13. login = LoginPage(self.driver)
    14. login.login_valid('小明', '123456Xm')
    15. time.sleep(2)
    16. self.assertEqual(self.driver.current_url, 'http://www.softwarebox.club/', '页面跳转失败')
    17. def test_login_fail_username(self):
    18. # case:输入的用户名不存在,系统提示用户不存在'
    19. login = LoginPage(self.driver)
    20. login.login_valid('小朱', '123')
    21. time.sleep(2)
    22. alert, message = login.alert_message()
    23. self.assertEqual(message, '用户不存在', '弹窗信息不正确')
    24. # 关闭弹窗
    25. alert.accept()
    26. def test_login_fail_password(self):
    27. # case:输入的密码不正确,登录失败
    28. login = LoginPage(self.driver)
    29. login.login_valid('小明', '123')
    30. time.sleep(2)
    31. alert, message = login.alert_message()
    32. self.assertEqual(message, '账号或密码不正确', '弹窗信息不正确')
    33. # 关闭弹窗
    34. alert.accept()
    35. def tearDown(self) -> None:
    36. self.driver.quit()

    main.py

    创建测试用例集,将测试用例添加到用例集。

    1. import unittest
    2. from TestCase.LoginCase import LoginCase
    3. def suite():
    4. suite = unittest.TestSuite()
    5. suite.addTest(LoginCase('test_login_success'))
    6. suite.addTest(LoginCase('test_login_fail_username'))
    7. suite.addTest(LoginCase('test_login_fail_password'))
    8. return suite
    9. if __name__ == '__main__':
    10. runner = unittest.TextTestRunner(verbosity=2)
    11. runner.run(suite())

    运行main.py,执行结果如下:

    下一篇:(七)Selenium自动化测试实战—开发成工具_要开朗的spookypop的博客-CSDN博客

  • 相关阅读:
    《MLB棒球创造营》:走近棒球运动·华盛顿国民队
    PyTorch离线安装
    Python网络通信 TCP/IP/HTTP的区别
    【web-攻击逻辑设计漏洞】(8.1)征求、修改密码、结算功能
    redis archive github
    游戏滚动列表的优化(降低drawcall从154降低到14,图片大小,界面逻辑)
    webgoat-client side客户端问题
    群晖Docker自建本地Bitwarden密码管理器远程同步使用
    01 INFINI-GATEWAY简介
    【前端知识】Node——文件流的读写操作
  • 原文地址:https://blog.csdn.net/sinat_23377479/article/details/126405423