Python+Selenium+Unittest实现PO模式web自动化框架(6)
阅读原文时间:2023年07月09日阅读:1

TestCases目录下是存放测试用例的目录。

TestCases目录下的测试用例采用unittest框架来构建。

例如:登录功能的测试用例。(test_1_login.py)

# --^_^-- coding:utf-8 --^_^--

@Remark:测试登录功能

import unittest
from selenium import webdriver
from PageObjects.login.login_page import LoginPage
from PageObjects.home.home_page import HomePage
from TestDatas import login_datas as ld
from TestDatas import Comm_Datas as cd
from Common import logger
import logging
import ddt
import time

@ddt.ddt
class TestLogin(unittest.TestCase):
@classmethod
def setUpClass(cls):
# 前置:打开浏览器,登录网页
cls.driver = webdriver.Chrome()
cls.driver.maximize_window()
cls.driver.get(cd.web_login_url)
cls.lp = LoginPage(cls.driver)

# 刷新一下当前页面  
def tearDown(self):  
    self.driver.refresh()

# 正常用例  
def test\_login\_2\_success(self):  
    logging.info("\*\*\*\*\*\*\*\*\*登录用例:正常场景-登录成功\*\*\*\*\*\*\*\*\*")  
    # 步骤:登录页面-登录操作  
    self.lp.login(ld.success\_data\["user"\], ld.success\_data\["pwd"\])  
    time.sleep(3)  
    # 断言:首页-【今日事务】这个元素存在  
    self.assertTrue(HomePage(self.driver).check\_login\_ele\_exists())

# 异常用例  
@ddt.data(\*ld.wrong\_datas)  
def test\_login\_1\_error(self, data):  
    time.sleep(2)  
    logging.info("\*\*\*\*\*\*\*\*\*登录用例:异常场景-登录失败\*\*\*\*\*\*\*\*\*")  
    self.lp.login(data\["user"\], data\["pwd"\])  
    time.sleep(2)  
    # 断言:判断提示信息是否一致  
    self.assertEqual(data\["check"\],LoginPage(self.driver).get\_errorMsg())

@classmethod  
def tearDownClass(cls):  
    # 后置:关闭浏览器  
    cls.driver.quit()

登录的用例函数,只需要调用在PageObjects目录下登录页面的登录功能即可,而不需要再次编写元素定位和元素操作。

登录的用例分成登录成功和登录失败的用例,登录失败有(用户名错误,密码错误)等情况,但是参数就只有用户名和密码,只不过值发生变化,所以可以用ddt模块来做参数化,这样就不需要写多条登录失败的测试用例。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器