selenium+python(模块化驱动测试)

    模块化驱动测试,就是借鉴编程语言中模块化的思想,把重复的操作独立成功公告模块,懂用例执行过程中需要用到这一模块操作时则被调用,这样可以极大的消除重复从而提高测试用例的可维护性

下面具体以126邮箱为例:

首先对每次要都用到的登录登出独立出来,放在公共模块中

public.py

# coding=utf-8
class Login():
# login 登录
def login(self,driver):
  
    driver.find_element_by_id("IdInput").clear()
    driver.find_element_by_id("IdInput").send_keys("username")
    driver.find_element_by_id("pwdInput").clear()
    driver.find_element_by_id("pwdInput").send_keys("123456")
    driver.find_element_by_id("loginBtn").click()  # 点击确认登录按钮

# logout 登出
def logout(self,driver):
    time.sleep(2)
    driver.find_element_by_link_text(u"退出").click()

  把函数独立到单独的脚本中,主要是为函数增加浏览器驱动的参数,因为函数的实现操作需要通过浏览器驱动driver,driver需要通过具体调用的用例给定。

test_case.py,test_case.py通过调用登录、退出函数实现模块化

#coding=utf-8
from  selenium import webdriver
from public import login
import unittest

class LoginTest(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.base_url = "http://www.126.com"
        self.driver.implicitly_wait(5)

    def test_write_letter_case(self):
        driver = self.driver
        driver.get(self.base_url)
        #调用登录函数
        login().login(driver)

        #实现收信、操作
        #.......

        #调用退出函数
        login().logout(driver)

    def tearDown(self):
        self.driver.quit()

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

  首先,需要导入当前目录下的public.py文件中的Login(),在需要的位置调用类中的login()和loginout()函数,这样对于每个用例的编写和维护就会方便很多

原文地址:https://www.cnblogs.com/101718qiong/p/7479736.html