騰訊大牛教你簡單的自動化測試模型(Python+Selenium)

今天講解簡單的自動化測試模型,對於剛接觸自動化測試的同學,由於沒有編程語言的基礎,是搞不懂代碼裡面的函數、封裝、包以及其他概念,只是瞭解字符串、數組、元組及字典這種最基本的名詞,更不懂自動化測試框架了。

這篇筆記來粗略記下學習自動化測試的幾種模型。

1、線性測試

  線性測試,顧名思義,就是一條路按照一條直線走到底。它的每個腳本都是獨立的,都可以拿出來單獨運行,來驗證一個功能點,上兩段小代碼舉個栗子:

# coding:utf-8

from time import sleep # 從time中引入sleep

from selenium import webdriver # 從selenium中引入webdriver

driver = webdriver.Firefox() # 選擇打開的瀏覽器

driver.maximize_window() # 瀏覽器窗口最大化

driver.implicitly_wait(3) # 隱式等待

driver.get("https://www.baidu.com") # 獲取URL,打開頁面

driver.quit() # 退出相關瀏覽器

# coding:utf-8

from time import sleep # 從time中引入sleep

from selenium import webdriver # 從selenium中引入webdriver

driver = webdriver.Firefox() # 選擇打開的瀏覽器

driver.maximize_window() # 瀏覽器窗口最大化

driver.implicitly_wait(3) # 隱式等待

driver.get("https://www.baidu.com") # 獲取URL,打開頁面

search = driver.find_element_by_id("kw") # 通過id定位搜索框

search.send_keys("selenium") # 填入"selenium"

sleep(5) # 直接等待

driver.quit() # 退出相關瀏覽器

  以上兩段代碼,分別做了實現打開百度首頁和打開百度首頁後輸入查找內容的功能,都可以單獨拿出來執行。如果需要修改查找訪問頁面,那麼我需要兩段代碼都需要修改。當這類獨立的腳本數量多了起來,去修改這些內容花費的工作量太大,將會失去了自動化的目的。

 2、模塊化與類庫

login.py

# coding:utf-8

from time import sleep

from selenium import webdriver # 從selenium中引入webdriver

def login_mantis():

driver = webdriver.Firefox() # 選擇打開的瀏覽器

driver.maximize_window() # 瀏覽器窗口最大化

driver.implicitly_wait(3) # 隱式等待

driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php") # 獲取URL,打開頁面

sleep(1) # 直接等待

username = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input") # 通過Xpath定位獲取輸入賬號框

username.send_keys("wuhaobo") # 輸入賬號

sleep(1)

password = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input") # 通過Xpath定位獲取輸入密碼框

password.send_keys("123456") # 輸入密碼

sleep(1)

login = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input") # 通過Xpath定位獲取登錄按鈕

login.click() # 點擊登錄按鈕

sleep(3)

  上面的代碼實現了mantis登錄功能。

quit.py

# coding:utf-8

from selenium import webdriver # 從selenium中引入webdriver

def quit_mantis():

driver = webdriver.Firefox() # 選擇打開的瀏覽器

driver.quit() # 退出相關瀏覽器

  上面的代碼實現了mantis退出功能。

do_something_in_mantis.py

# coding:utf-8

from time import sleep # 從time中引入sleep

from selenium import webdriver # 從selenium中引入webdriver

import login # 引入登錄模塊

import quit # 引入退出模塊

login.login_mantis() # 調用登錄模塊

print ">>>以下操作為在登錄界面後的操作"

# 需要做的操作放在登錄和退出中間

print ">>>以上操作為在登錄界面後的操作"

quit.quit_mantis() # 調用退出模塊

上面的代碼實現了調用登錄模塊和退出模塊。

如果對軟件測試、接口測試、自動化測試、面試經驗交流。感興趣可以加軟件測試交流:1085991341,還會有同行一起技術交流。

通過以上代碼可以發現,登錄模塊和退出模塊可以讓任意操作類腳本調用,省去了該部分代碼的重複量,便於維護的同時,也加快了代碼的開發速度。

3、數據驅動

直接理解成參數化輸入,不同結果輸出。

(1)、讀取TXT方式

將存好登錄的賬號密碼放置在兩個TXT文件中:

騰訊大牛教你簡單的自動化測試模型(Python+Selenium)

# coding:utf-8

from time import sleep

from selenium import webdriver # 從selenium中引入webdriver

username_file = open("G:\\\\joker_study\\\\\\username.txt") # 打開賬號文本路徑

username = username_file.read() # 取出賬號

password_file = open("G:\\\\joker_study\\\\password.txt") # 打開密碼文本路徑

password = password_file.read() # 取出密碼def login_mantis_by_txt():

driver = webdriver.Firefox() # 選擇打開的瀏覽器

driver.maximize_window() # 瀏覽器窗口最大化

driver.implicitly_wait(3) # 隱式等待

driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php") # 獲取URL,打開頁面

sleep(1) # 直接等待

username_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input") # 獲取輸入賬號框

username_input.send_keys(username) # 輸入賬號

sleep(1)

password_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input") # 獲取輸入密碼框

password_input.send_keys(password) # 輸入密碼

sleep(1)

login_button = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input") # 獲取登錄按鈕

login_button.click() # 點擊登錄按鈕

sleep(3)

driver.quit() # 退出瀏覽器

上面的代碼實現了從TXT文件中讀出賬號和密碼,再傳入函數中,進行登錄操作。

(2)、通過函數

userconfig.py

# coding:utf-8

def username_password(username="CJOLER",password="123456"):

return username,password

login.py

# coding:utf-8

from time import sleep

from selenium import webdriver # 從selenium中引入webdriver

import userconfig # 引入userconfig文件

un, pw = userconfig.username_password()

print un, pw

def login_mantis_by_txt():

driver = webdriver.Firefox() # 選擇打開的瀏覽器

driver.maximize_window() # 瀏覽器窗口最大化

driver.implicitly_wait(3) # 隱式等待

driver.get("http://192.168.1.201/mantisbt-1.2.19/login_page.php") # 獲取URL,打開頁面

sleep(1) # 直接等待

username_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[2]/td[2]/input") # 獲取輸入賬號框

username_input.send_keys(un) # 輸入賬號

sleep(1)

password_input = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[3]/td[2]/input") # 獲取輸入密碼框

password_input.send_keys(pw) # 輸入密碼

sleep(1)

login_button = driver.find_element_by_xpath("html/body/div[3]/form/table/tbody/tr[6]/td/input") # 獲取登錄按鈕

login_button.click() # 點擊登錄按鈕

sleep(3)

driver.quit() # 退出瀏覽器

上面的代碼實現了將賬號密碼放在一個函數內,再去調用,進行登錄操作。

以上,希望對你有幫助,有被幫助到的朋友歡迎點贊,評論。


分享到:


相關文章: