python+selenium自動化測試-16自動化測試模型

自動化測試模型,即自動化測試框架與工具設計的思想。有四種常用模型,分別是線性模型、模塊化驅動模型、數據驅動模型和關鍵字驅動模型。

在工作實踐中,最常用的是模塊化驅動和數據驅動兩種,聯合使用的場景十分廣泛。

1、線性模型

概念:線性模型的每個腳本都是相互獨立的,且不會產生其他依賴與調用,單純的來模擬用戶完整的操作場景。邏輯清晰,但缺點非常明顯:開發成本高,用例之間存在重複的操作。
線性模型用一個簡單的登錄後退出的操作說明:

from selenium import webdriver
from time import sleep

driver = webdriver.Firefox()#推薦使用Firefox

# 加載瀏覽器驅動
driver.get("http://localhost")

driver.find_element_by_name("username").clear()#清空文本框的用戶名
driver.find_element_by_name("username").send_keys("forTest")

driver.find_element_by_name("password").clear()
driver.find_element_by_name("password").send_keys("123456")

driver.find_element_by_name("Submit").click()# 點擊“登錄”按鈕
sleep(3)#這裏使用了顯式等待,等待登錄後的首頁頁面元素加載完成。否則下面可能會找不到‘退出’。

driver.find_element_by_link_text("退出").click()
sleep(2)
driver.switch_to_alert().accept()#點擊退出後會彈出提示框,要點擊確認

driver.quit()# 關閉瀏覽器及其驅動,單個窗口也可以使用driver.close()

2、模塊化驅動模型

概念:將重複的操作封裝成公共模塊,當用例執行過程中需要用到這一模塊操作時直接調用即可。相對與線性模型,最大的優勢是最大限度消除了重複,從而提高了開發效率和提高測試用例的可維護性。缺點:雖然操作步驟相同,但是用到的測試數據可能不同。

(1)common.py
import random

class common():
	def type_getRandomNum(self):
		try:
			self.randoma = random.randint(100000, 999999)
            return self.randoma
		except BaseException as msg:
		print(msg)
(2)instance1.py
import common

def instance1(self):
	try:
		randomNum1 = common.type_getRandomNum()
		print("randomNum1 is :%d"%randomNum1)
	except BaseException as msg:
		print(msg)
(3)instance2.py
import common

def instance2(self):
	try:
		randomNum2 = common.type_getRandomNum()
		print("randomNum2 is :%d"%randomNum2)
	except BaseException as msg:
		print(msg)

3、數據驅動模型

概念:將測試中的測試數據和操作分離,數據存放在文件中單獨維護(不直接放在代碼中)。通過數據的改變從而驅動自動化測試的執行,最終引起測試結果的改變。實際就是將測試數據參數化。

(1)test_login.py
from login import test_login
from testCase.model.getuserInfo import getYaml

class userMgt():
    def test_login(self):
        #調用函數獲取賬號密碼
        data = getYaml('userInfo.yaml')
        username = data['user']['username']
        psd = data['user']['password']
        test_login.login_action(self,username,psd)
        sleep(3)
(2)login.py
from selenium import webdriver
from time import sleep
class test_login():
	def login_action(self,username,psd):#公共模塊參數化
		driver = webdriver.Firefox()
		driver.get("http://localhost")
		
		driver.find_element_by_name("username").clear()
		driver.find_element_by_name("username").send_keys(username)
		
		driver.find_element_by_name("password").clear()
		driver.find_element_by_name("password").send_keys(psd)
		
		driver.find_element_by_name("Submit").click()
(3)getuserInfo.py
from ruamel import yaml

def getYaml(yamlName):
    #讀取yaml文件
    with open('F:\\phomeNetFront\\test_data\\yaml\\'+yamlName,'r',encoding="utf-8") as file:
        data=yaml.load(file, Loader=yaml.RoundTripLoader)
        return data
(4)userInfo.yaml
user:
  username: forTest
  password: 123456

4、關鍵字驅動模型

概念:即通過關鍵字的改變引起測試結果的改變。Selenium IDE也是一種傳統的關鍵字驅動的自動化工具,可以進行錄製、回放等操作。對於沒多少編程經驗的初學者來說,Selenium IDE是一個不錯的自動化測試入門工具。這裏不具體展開。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章