自動化測試模型總結

測試框架就是一個集成的體系,包括測試功能的函數庫(如導入的包),測試數據源(測試數據),測試對象識別標準(webdriver的各個api),以及可充用的模塊(結構優化),自動化測試框架主要通過  模塊驅動測試--》數據驅動測試--》對象驅動測試幾個過程。python

一.模塊驅動測試web

模塊驅動主要發展過程:線性測試(一個用例對應一個腳本,數據和腳本混合)---》模塊化與類庫(重複的部分寫成公共的模塊,須要的時候進行調用)api

模塊化多用於登陸和退出模塊,或者多處共用的模塊app

好處:1.提升了開發效率,一處寫,多處用   2.方便腳本維護,沒必要改一處,到處動,相似與環境變量設置的   %home%框架

下面咱們進行登陸和退出的模塊化,在這以前先了解一下 python的類和方法jsp

def關鍵字用來建立函數,add爲方法名。a和b爲參數;class關鍵字用來建立類,Counter爲方法名,特別注意,類下建立方法第一個參數必須爲self,可是使用時沒必要賦值模塊化

self:self指對象自己,建立類和方法時實例化獲得對象 self,調用時自動執行 類.方法(對象self,參數a,參數b)函數

>>> def add(a,b):
	c=a+b
	print c

	
>>> add(2,3)
5
>>> def add1(a=1,b=12):
	c=a+b
	return c

>>> d=add1()
>>> print d
13
>>> class Counter:
	def add(self,a,b):
		c=a+b
		print c
	def subtract(self,a,b):
		c=a-b
		print c
>>> d=Counter()
>>> d.subtract(7,2)
5

登陸輸入用戶名,密碼的操做單獨放到一個腳本中  login.py測試

#coding=utf-8
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
import unittest
from time import sleep

#登陸網址 def login(self): driver=self.driver()
    dr.maxmize_window()
    dr.find_element_by_name("username").send_keys("dingxin")
    dr.find_element_by_name("password").send_keys("admin")
    dr.find_element_by_id("loginInBtn").click()
    sleep(3)

登陸後進行其餘操做放到 test_login.py中獲得:優化

#coding=utf-8
from selenium import webdriver
from time import sleep
from selenium.common.exceptions import NoSuchElementException
import unittest
import login

#Login類繼承TestCase類,告訴unittest,這是一個案例 class Login(unittest.TestCase): #初始化數據 def setUp(self): self.driver=webdriver.Chrome() self.driver.implcitly_wait(30) self.url="http://dhw.lxhbysn.com/pages/E02/login.jsp" self.verificationErrors=[] self.accept_next_alert=True #登陸 def test_login(self): driver=self.driver driver.get(self.url) #調用登陸模塊 login.login(self) sleep(3) lis=driver.find_elements_by_class_name("li") for li in lis: if li.get_attribute("role")=="presentation": print li.text # def tearDown(self): self.driver.quit() self.assertEqual([],self.verificationErrors) if _name_=="_main_": unittest.main()

 (注意縮進,要否則調試不出來)

二.數據驅動測試(即參數化,輸入數據的不一樣致使結果也不一樣)

實例1:百度搜索逐個多個字段

建立data.txt

selenium
go die
WFU
appium

建立search.py

#coding=utf-8
from selenium import webdriver
from time import sleep
import os

#打開數據文件並讀取
source=open("C:\\Users\\DELL\\Desktop\\data.txt","r")
values=source.readlines()
source.close()

#登陸網址
for search in values:
    dr=webdriver.Chrome()
    dr.get("http://www.baidu.com")
    dr.find_element_by_id("kw").send_keys(search)
    dr.find_element_by_id("su").click()
    sleep(3)

open是以只讀方式打開,readlines()逐行讀取文件內容

實例2:登陸時多個用戶名和密碼

python讀取文件只有整個讀取,逐行,逐個字節進行讀取,沒有一次讀取兩條數據

(1)思路:能夠建立兩個txt,一個放登陸名,一個放密碼,缺點是沒法實現循環

(2)使用函數

def  fun(name="admin",pass=123"):
   return  name,pass

#正式的登陸頁面調用該函數
us,pw=info.fun()  

(3)python字典(鍵值對)建立字典用{},keys()返回鍵值列表,values()返回值列表,

>>> data={'user':'dong','apassword':'489330019'}
>>> print data
{'user': 'dong', 'apassword': '489330019'}
>>> data.keys()
['user', 'apassword']
>>> data.values()
['dong', '489330019']
>>> data.items()
[('user', 'dong'), ('apassword', '489330019')]

函數獲取data(整個文件)後期能夠用如下循環取出:

for user,pass in  info.items():
 # (將user,pass傳入到send_keys()中) 

實例三:表單參數化,多條表單信息(姓名,性別,郵箱,號碼),保存成excel,轉爲csv,可用於建立訂單或添加聯繫人

具體實現:

建立xls文件轉化爲csv格式,

#coding=utf-8
#導入csv包
import csv

#csv.reader讀取csv文件
w_file='C:\\Users\\DELL\\Desktop\\info.csv'
data=csv.reader(file(w_file,'rb'))

#循環輸出每一行信息

for user in data:
    print user[0]
    print user[1]
    print user[2]
    print user[3]

結果以下:user[0]表示第一列的數據

>>> ================================ RESTART ================================
>>> 
test
test@163.com
18
男
test2
test2@163.com
21
女
test3
test3@163.com
11
女

實例四:能夠經過xml文件進行參數化,通常來講 csv和xml比較靈活。

三.對象驅動測試

對象驅動測試其實包括數據和關鍵字驅動測試,關鍵字驅動即相似與selenium IDE 的 command,target 和value 組合進行測試。

相關文章
相關標籤/搜索