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

本文介绍了如何使用Python的unittest框架结合Selenium进行自动化测试,特别是针对登录功能。首先展示了 LoginPage 类封装了页面元素和登录方法,然后在 LoginCase 类中编写了测试用例,包括登录成功、用户名不存在和密码错误三种情况。最后通过main.py组织测试用例并运行,验证了测试的正确性。
摘要由CSDN通过智能技术生成

上一篇:(五)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,执行结果如下:

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

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天天向上的spookypop

喜欢不吝点桃心,土豪也可赏酒钱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值