python+selenium+unittest 执行所有测试用例脚本,只登陆一次

python selenium 执行多个py类测试用例脚本,使用同一个驱动,避免登录多次。

在自动化项目中 通常会有N个自动化场景,这个场景可能会分别写在不同的py文件中,如果在每个文件中都执行一次启动浏览器的话,会出现启动多个浏览器并且自动化停止

解决思路:
把启动浏览器的这段代码 封装成一个类,然后在不同的自动化py文件中 通过imoprt 引入 然后进行复用.
python+selenium+unittest 执行所有测试用例脚本,只登陆一次_第1张图片

把驱动封装成一个类

from selenium import webdriver

class DriverUtil:
    __webDriver = None

    @classmethod
    def getWebDriver(cls):
        if cls.__webDriver == None:
            cls.__webDriver = webdriver.Chrome()

        return cls.__webDriver

测试用例直接进行调用

# coding=utf-8
import time
from utils.DriverUtil import DriverUtil
from PageObject.InformationPage import InformationPage
from Method.entryMethod import TestOrder
from Method.examineMethod import TestExamine
from Method.informationMethod import TestPayment
from Method.loginMethod import TestLogin
import unittest


class TestCustomer(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        print("测试开始了...")
        # 驱动设置
        cls.driver = DriverUtil.getWebDriver()
        # 实例化
        cls.information_page = InformationPage(cls.driver)

    # 10.部分通过→取消打款
    def user_enterOrder_10(self):
        TestLogin(self.driver).user_login('woke', '123456', '8888')
        time.sleep(1)
        self.information_page.type_workOrder()
        time.sleep(1)
        self.information_page.type_orderList()
        time.sleep(1)
        TestOrder(self.driver).user_order('200', 'test1', 'monkey1')
        time.sleep(1)
        TestExamine(self.driver).user_partPass('53057095', '0', '100', '1', '0.5', '鲸鱼', 'test write off success9')
        self.information_page.type_orderList()
        time.sleep(1)
        self.information_page.type_details()
        time.sleep(1)
        self.information_page.switch_window()
        time.sleep(1)
        TestPayment(self.driver).user_bank('999', '打款信息2++', '1700')
        time.sleep(1)
        self.information_page.switch_window()
        self.information_page.type_cancel2()
        time.sleep(1)
        self.information_page.type_confirm2()
        time.sleep(1)
        self.information_page.switch_window()
        time.sleep(1)

    # 部分通过→取消打款
    def test_enterOrder_10(self):
        self.user_enterOrder_10()

    # 结束测试
    @classmethod
    def tearDownClass(cls):
        time.sleep(2)
        cls.driver.quit()  # 退出浏览器
        print("测试结束了...")


if __name__ == '__main__':
    unittest.main()

@classmethod的作用是 在一个类中 setUpClass、tearDownClass只执行一次

如果你是多个文件一起执行多个自动化场景,就按照上述文件格式即可

你可能感兴趣的:(UI自动化,python,selenium)