Python+Selenium+unittest实现多个类测试用例文件只做一次打开浏览器、登录、关闭浏览器操作

    每次执行多个测试用例文件总是会执行多次打开浏览器、关闭浏览器的操作,使得UI自动化测试效率降低。但是如果把所有的用例放在一个类文件里,显得很冗余且不灵活。

    所以,可以在setUp方法前定义一个全局dr = webdriver.Chrome(),在每次用例执行结束后执行刷新一次浏览器操作或者不刷新,视项目而定。

    定义setUp和tearDown方法:

import unittest
from selenium import webdriver

class TestClass(unittest.TestCase):
    #设置全局的driver
    dr = webdriver.Chrome()

    def setUp(self, driver=dr):
        self.driver = driver
        self.driver.maximize_window()

    #每个测试用例文件执行完都会刷新一下,也可以写在每个用例的最后
    '''def tearDown(self, driver=dr):
        self.driver = driver
        try:
            self.driver.refresh()
        except Exception as e:
            print('END')'''

    登录测试用例

from selenium.webdriver.common.by import By
from base import Page
import time
import time, unittest
from test_case.models import myunit, function
from test_case.pageObj.loginPage import loginPage

#继承setUp和tearDown方法的类
class TestLogin(myunit.TestClass):
    '''登录测试'''
    def test_login(self):
        #输入地址
        self.driver.get('http://.....')
        #输入用户名
        self.driver.find_element(By.CSS_SELECTOR, ".form-label:nth-child(1) .input-class").send_keys(username)
        #输入密码
        self.driver.find_element(By.CSS_SELECTOR, ".form-label:nth-child(2) .input-class").send_keys(password)
        #点击登录
        self.driver.find_element(By.CSS_SELECTOR, ".submit-btn").click()
        self.driver.implicitly_wait(30)
        time.sleep(2)

    查询测试用例

from test_case.models import myunit
from selenium.webdriver.common.by import By
import unittest, time

class TestKhyl(myunit.TestClass):
    '''客户一览'''
    def test_khyl(self):
        #这边不用再次输入地址,可以直接在当前driver中操作
        self.driver.find_element(By.CSS_SELECTOR, ".left-menu:nth-child(3) .level2").click()
        time.sleep(10)

     关闭浏览器测试用例

from test_case.models import myunit

#关闭浏览器
class TestQuit(myunit.TestClass):
    def test_quit(self):
        self.driver.quit()

    由于批量执行测试用例时候,系统是根据文件名a-z的顺序执行,所以可以把登录的测试用例文件名写成aaa_login.py,最后关闭浏览器的用例文件名写成zzz_quit.py。

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