欢迎来到测试Test-Admin的博客

本来以为,学习了这么多年,我已经洞察了世界,真相却不过是蒙蔽了自己。原来世界如此精彩,而我却一无所知。昨天已经成为过去,明天还是一个未知,但今天是一个礼物。珍惜自己,把握每一寸光阴!

Python+Selenium+Unittest实现PO模式web自动化框架(6)

1.TestCases目录下的模块

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模块来做参数化,这样就不需要写多条登录失败的测试用例。

 

posted on 2020-06-03 11:07  Test-Admin  阅读(1202)  评论(0编辑  收藏  举报

导航