㈠ 如何搭建python自動化測試框架

Auty文件夾結構介紹
1. actions文件夾:包含了和業務相關的包含可復用方法的腳本文件,根據業務的不同可以在actions文件夾下創建不同的業務文件夾;
2. constants文件夾:包含了常量初始化的python腳本文件,根據業務劃分可以再創建子文件夾或多個常量文件;
3. data文件夾:包含了測試用的數據;
4. lib文件夾:包含了支持框架運行的python文件;
5. log文件夾:包含了運行測試過程中生成的日誌文件;
6. results文件夾:包含了測試結果文件;
7. scripts文件夾:包含了scripts文件夾和selections文件夾;
1)scripts文件夾下包含了測試腳本(可根據業務劃分成多個子目錄);
2)selections文件夾下包含了suite文件(包含了需要執行的腳本路徑集合);
8. utils文件夾:包含了和業務邏輯無關的包含可復用方法的腳本文件;
Auty文件結構介紹
1. Auty文件夾下:
1)__init__.py文件:包結構所必需文件(以下所有涉及可調用腳本的文件夾下均需有此文件);
2)config.txt文件:Auty框架配置說明文件;
3)recovery.py文件:垃圾代碼回收文件(用來回收執行測試過程中因故障未能自動刪除的自動生成的代碼);
4)requirements文件:包含了框架所需要安裝的python庫信息;
5)setup.py文件:執行腳本以安裝requirements文件中所包含的python庫;
6)start.py文件:執行腳本以啟動介面自動化測試;
2. lib文件夾下:
1)exe_deco.py文件:包含修飾腳本運行時方法的文件;
2)execute_selection.py文件:包含運行suite集合下腳本方法的文件;
3)generate_html.py文件:包含根據生成的csv格式測試結果文件生成html類型測試結果文件方法的文件;
4)generate_result.py文件:包含生成csv格式測試結果方法的文件;
5)read_selection.py文件:包含讀取可執行的腳本列表方法的文件;
6)recovery_code.py文件:包含垃圾代碼回收方法的文件;
7)write_log.py文件:包含生成日誌文件方法的文件;
3. scripts文件夾下:
1)create_selection.py文件:包含創建suite文件(all_scripts_selection.txt)方法的文件;
Auty使用步驟
1. 運行Auty/setup.py文件;
2. 編寫介面測試python腳本並放到Auty/scripts/scripts目錄(或子目錄)下;
3. 運行Auty/scripts/create_selection.py文件生成Auty/scripts/all_scripts_selection.txt文件;
4. 修改Auty/scripts/all_scripts_selection.txt文件自定義test_selection.txt文件(名字隨意起)並放到Auty/scripts/selections文件夾下;
5. 運行Auty/start.py文件開始介面自動化測試;
6. 在Auty/results文件夾下生成的測試結果文件中查看測試結果。
Auty編寫過程
這個框架里scripts、utils、actions、contants四個文件夾中的內容是根據實際工作內容可以隨意替換的,其他為Auty介面自動化測試框架必需的組成部分

㈡ Python自動化測試框架有哪些

分享一些可用的Python自動化測試框架。
自動化測試常用的Python框架有哪些?常用的框架有Robot Framework、Pytest、UnitTest/PyUnit、Behave、Lettuce。Pytest、Robot Framework和UnitTest主要用於功能與單元測試,Lettuce和Behave僅適用於行為驅動測試。
一、Robot Framework
Python測試框架之一,Robot Framework被用在測試驅動(test-driven)類型的開發與驗收中。雖然是由Python開發而來,但是它也可以在基於.Net的IronPython和基於java的Jython上運行。作為一個Python框架,Robot還能夠兼容諸如Windows、MacOS、以及Linux等平台。
在使用Robot Framework(RF)之前,需要先安裝Python 2.7.14及以上的版本。推薦使用Python 3.6.4,以確保適當的注釋能夠被添加到代碼段中,並能夠跟蹤程序的更改。同時還需要安裝Python包管理器--pip。
二、Pytest
適用於多種軟體測試的Pytest,是另一個Python類型的自動化測試框架。憑借著其開源和易學的特點,該工具經常被QA(質量分析)團隊、開發團隊、個人團隊、以及各種開源項目所使用。鑒於Pytest具有「斷言重寫(assert rewriting)」之類的實用功能,許多大型互聯網應用,如Dropbox和Mozilla,都已經從下面將要提到的unittest(Pyunit)切換到了Pytest之上。
除了基本的Python知識,用戶並不需要更多的技術儲備。另外,用戶只需要有一台帶有命令行界面的測試設備,並且安裝好了Python包管理器、以及可用於開發的IDE工具。
三、UnitTest/PyUnit
UnitTest/PyUnit一種標准化的針對單元測試的Python類自動化測試框架。基類TestCase提供了各種斷言方法、以及所有清理和設置的常式。因此,TestCase子類中的每一種方法都是以「test」作為名詞前綴,以標識它們能夠被作為測試用例所運行。用戶可以使用load方法和TestSuite類來分組、並載入各種測試。
可以通過聯合使用,來構建自定義的測試運行器。正如我們使用Junit去測試Selenium那樣,UnitTest也會用到UnitTest-sml-reporting、並能生成各種XML類型的報告。由於UnitTest默認使用了Python,因此我們並不需要什麼先決條件。除了需要具備Python框架的基本知識,您也可以額外地安裝pip、以及用於開發的IDE工具。
四、Behave
行為驅動開發是一種基於敏捷軟體開發的方法。它能夠鼓勵開發人員、業務參與者和QA人員,三者之間的協作。Python測試框架Behave允許團隊避開各種復雜的情況,去執行BDD測試。從本質上說該框架與SpecFlow和Cucumber相似,常被用於執行自動化測試。用戶可以通過簡單易讀的語言來編寫測試用例,並能夠在其執行期間粘貼到代碼之中。而且,那些被設定的行為規范與步驟,也可以被重用到其他的測試方案中。
任何具備Python基礎知識的人都可以使用Behave。其他先決條件還包括:先安裝Python 2.7.14及以上的版本。通過Python包管理器或pip來與Behave協作。大多數開發人員會選擇Pycharm作為開發環境,當然您也可以選用其他的IDE工具。
五、Lettuce
Lettuce是另一種基於Cucumber和Python的行為驅動類自動化工具。Lettuce主要專注於那些具有行為驅動開發特徵的普通任務。它不但簡單易用,而且能夠使得整個測試過程更流暢、甚至更有趣。安裝帶有IDE的Python 2.7.14、及以上的版本。當然,您也可以使用Pycharm或任何其他IDE工具。同時,您還需要安裝Python包管理器。
自動化測試的Python框架,Pytest、Robot Framework和UnitTest可主要用於功能與單元測試,而Lettuce和Behave僅適用於行為驅動測試。對於功能測試而言,Pytest是的。如果您是基於Python自動化測試的新手,Robot Framework是的入門工具。雖然其功能有所受限,但是它非常容易上手。對於基於Python的BDD測試而言,Lettuce和Behave同樣優秀。不過,如果你已經有了一定的Pytest經驗,那麼請使用Pytest-bdd。

㈢ 如何搭建python+selenium自動化測試框架

selenium是一個web的自動化測試工具,不少學習功能自動化的同學開始首選selenium,相因為它相比QTP有諸多有點:

*免費,也不用再為破解QTP而大傷腦筋

*小巧,對於不同的語言它只是一個包而已,而QTP需要下載安裝1個多G的程序。

*這也是最重要的一點,不管你以前更熟悉C、java、ruby、python、或都是C#,你都可以通過selenium完成自動化測試,而QTP只支持VBS

*支持多平台:windows、linux、MAC,支持多瀏覽器:ie、ff、safari、opera、chrome

*支持分布式測試用例的執行,可以把測試用例分布到不同的測試機器的執行,相當於分發機的功能。

關於selenium的基礎知識與java平台的結合,我之前寫過一個《菜鳥學習自動化測試》系列,最近學python,所以想嘗試一下selenium的在python平台如何搭建;還好這方法的文章很容易,在此將搭建步驟整理分享。

搭建平台windows

准備工具如下:

-------------------------------------------------------------

下載python

-------------------------------------------------------------

如果你是新學python,哪果你沒有要用的包是必須依賴於pyhton2.x 的,那麼請毫不猶豫的選擇python3.5吧!

window安裝步驟:

1、下載python安裝。

又報了個錯:

Chromeversionmustbe>=27.0.1453.0 (Driverinfo:chromedriver=2.0,platform=WindowsNT5.1SP3x86)

說我chrome的版本沒有大於27.0.1453.0,這個好辦,更新到最新版本即可。

安裝IEdriver

在新版本的webdriver中,只有安裝了iedriver使用ie進行測試工作。

iedriver的下載地址在這里,記得根據自己機器的操作系統版本來下載相應的driver。

暫時還沒嘗試,應該和chrome的安裝方式類似。

記得配置IE的保護模式

如果要使用webdriver啟動IE的話,那麼就需要配置IE的保護模式了。

把IE里的保護模式都選上或都勾掉就可以了。

㈣ 如何搭建自動化測試框架python+selenium

1) 創建一個足夠大的文件
dd if=/dev/zero of=/localdisk/swapfile bs=1024 count=
(count的值等於1024 x 你想要的文件大小, 是4G)

2) 把這個文件變成swap文件.
mkswap /localdisk/swapfile

3) 啟用這個swap文件
swapon /localdisk/swapfile

4) 在每次開機的時候自動載入swap文件, 需要在 /etc/fstab 文件中增加一行
/localdisk/swapfile swap swap defaults 0 0

5) 查看swap
cat /proc/swaps

㈤ 用python怎麼寫一個介面自動化框架

#!/usr/bin/env python
import sys

str = True
while (str):
dig = int(input())
if dig > 100:
print 'please input mun between 0~100'
elif dig >= 90:
print 'A'
elif dig >= 80:
print 'B'
elif dig >= 70:
print 'C'
elif dig >= 60:
print 'D'
elif dig <60:
print 'E'

㈥ python+selenium 用什麼自動化測試框架

其實python自帶的uinttest就挺好的

驅動數據的話,直接用下面這樣的代碼就行

source=open("input_file.txt","r")
values=source.readlines()

forsearchinvalues:
selenium.open("/test_page")
selenium.click("buttonPress")
...
#test...
...

㈦ 基於python的自動化測試框架有哪些

好象python的瀏覽器測試框架,原來只有一個,還是仿ruby的框架做的。似乎在IE上可以比較好的應用。很老的框架。對JS支持不好。

不過python寫個測試框架真是非常容易的事情,隨手就來。 基於瀏覽器測試也容易做。因為你可以使用pyqt,這個庫里有一個基於webkit的瀏覽器。基本上,想做什麼都可以了。

最近聽說有幾個新的BDD的框架正在做。也不知道怎麼樣。

其實對於python這種語言來說,框架的成本太低。所以最好不要做框架。它有一個基本的編程原則則DRY。do not repeat yourself。不要再造輪子的意思。

直接使用現有的python的testsuite結合進程,線程模型,還有QT輕松就組裝出一個測試模塊。

㈧ 高端Python自動化測試開發系列的大致框架是什麼樣子的

好象python的瀏覽器測試框架,原來只有一個,還是仿ruby的框架做的。似乎在IE上可回以比較好的應答用。很老的框架。對JS支持不好。

不過python寫個測試框架真是非常容易的事情,隨手就來。 基於瀏覽器測試也容易做。因為你可以使用pyqt,這個庫里有一個基於webkit的瀏覽器。基本上,想做什麼都可以了。

最近聽說有幾個新的BDD的框架正在做。也不知道怎麼樣。

其實對於python這種語言來說,框架的成本太低。所以最好不要做框架。它有一個基本的編程原則則DRY。do not repeat yourself。不要再造輪子的意思。

直接使用現有的python的testsuite結合進程,線程模型,還有QT輕松就組裝出一個測試模塊。

㈨ 怎麼搭建 python 的介面自動化測試框架

1.框架搭建
1.1 將struts2中的jar文件導入到項目中
commons-fileupload-1.2.1.jar,commons-io-1.3.2.jar,freemarker-2.3.15.jar,ognl-2.7.3.jar
struts2-core-2.1.8.1.jar,xwork-core-2.1.6.jar
1.2 將struts.xml文件拷貝到項目的src目錄下
1.3 修改web.xml文件
添加:
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
2.action中方法的調用方式
2.1 自動方法調用(只能調用execute)
2.2 指定方法調用(通過設置action標簽中的method屬性)
2.3 動態方法調用(在調用時,在action後加!方法名稱,如:login!deletUser)
注意:<constant name="struts.enable.DynamicMethodInvocation" value="true" />
2.4 通配符調用
3. action接收客戶端參數的方式
3.1 直接在action中定義參數變數,並生成set和get方法
3.2 定義接收參數的類
注意:都要為action的成員變數提供get和set方法
3.3 讓action實現ModelDriven介面,並實現裡面的getModel方法
4.獲取request,session,application的方式
4.1 用ActionContext獲取,實際上獲取到的都是Map對象
4.2 用ServletActionContext獲取,獲取到的是基於Servlet API的對象

㈩ 如何創建 python+requests介面自動化測試框架

工作原理: 測試用例在excel上編輯,使用第三方庫xlrd,讀取表格sheet和內容,sheetName對應模塊名,Jenkins集成服務發現服務moleName查找對應表單,運用第三方庫requests請求介面,根據結果和期望值進行斷言,根據輸出報告判斷介面測試是否通過。
1. 數據准備
數據插入(容易實現的測試場景下所需外部數據)
准備sql (介面需要重復使用,參數一定得是變數)
2.集成部署(運維相關了解即可)
平滑升級驗證腳本加入自動化
3.自動化框架實現
調用mysql
excel遍歷測試用例
requests實現介面調用
根據介面返回的code值和Excel對比
報告反饋
暴露服務
寫一個簡單登錄的介面自動化測試
代碼的分層如下圖:
coding.png
一、寫一個封裝的獲取excel表格的模塊
excel.png
代碼實現如下:
# !/usr/bin/python
# -*- coding: UTF-8 -*-
# 基礎包:excel的封裝
import xlrd
workbook = None
def open_excel(path):
"""打開excel"""
global workbook
if (workbook == None):
workbook = xlrd.open_workbook(path, on_demand=True)
def get_sheet(sheetName):
"""獲取行號"""
global workbook
return workbook.sheet_by_name(sheetName)
def get_rows(sheet):
"""獲取行號"""
return sheet.nrows
def get_content(sheet, row, col):
"""獲取表格中內容"""
return sheet.cell(row, col).value
def release(path):
"""釋放excel減少內存"""
global workbook
workbook.release_resources()
del workbook
代碼封裝後當成模塊引用,這還是最開始呢。
二、引用log模塊獲取日誌
准備工作:
需要一個日誌的捕獲,包括框架和源碼拋出的expection。
代碼如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 基礎包:日誌服務
import logging
import time
def getLogger():
global tezLogPath
try:
tezLogPath
except NameError:
tezLogPath = "/data/log/apiTest/"
FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
# file = tezLogPath + time.strftime("%Y-%m-%d", time.localtime()) + ".log"
# logging.basicConfig(filename=file, level=logging.INFO, format=FORMAT)
# 開發階段為了方便調試,可不輸出到文件
logging.basicConfig(level=logging.INFO, format=FORMAT)
return logging
三、引用requests模塊介面測試
准備工作:
需要的請求類型和執行測試的方法。
代碼如下:
#!/usr/bin/python#
#-*- coding: UTF-8 -*-
# 基礎包:介面測試的封裝
import requests
import tezLog as log
logging = log.getLogger()
def api_test(method, url, data ,headers):
"""
定義一個請求介面的方法和需要的參數
:Args:
method - 企業名稱 str
url - 用戶昵稱 str
data - 參數 str
headers - 請求頭信息 dict
非RESTful API請求另外的請求類型實際用不到。也不安全。
"""
try:
if method == "post":
results = requests.post(url, data, headers=headers)
if method == "get":
results = requests.get(url, data, headers=headers)
# if method == "put":
# results = requests.put(url, data, headers=headers)
# if method == "delete":
# results = requests.delete(url, headers=headers)
# if method == "patch":
# results == requests.patch(url, data, headers=headers)
# if method == "options":
# results == requests.options(url, headers=headers)
response = results.json()
code = response.get("code")
return code
except Exception, e:
logging.error("service is error", e)
def run_test(sheet):
"""
定義一個執行和斷言的方法
:Args:
sheet - 服務名稱 str(excel頁腳名稱識別的)
"""
rows = excel.getRows(sheet)
fail = 0
for i in range(2, rows):
#這里為什麼從第二行開始跑,因為會先執行SQL進行數據准備如之前Excel展示的空白位置
testData = excel.getContent(sheet, i, gl.CASE_DATA)
testUrl = excel.getContent(sheet, i, gl.CASE_URL)
testMethod = excel.getContent(sheet, i, gl.CASE_METHOD)
testHeaders = eval(excel.getContent(sheet, i, gl.CASE_HEADERS))
testCode = excel.getContent(sheet, i, gl.CASE_CODE)
actualCode = request.apiTest(testMethod, testUrl, testData, testHeaders)
expectCode = str(int(testCode))
failResults = ' url: ' + testUrl + ' params: ' + testData + ' actualCode: ' + actualCode + ' expectCode: ' + expectCode
if actualCode == expectCode:
logging.info("pass")
elif actualCode != expectCode:
logging.info("fail %s", failResults)
fail += 1
if fail > 0 :
return False
return True
四、關於參數中gl模塊
准備工作:
所有的參數和常量我們會整理到這個文件中,因為設計業務和服務密碼、資料庫密碼這里展示一部分。
代碼如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 腳本功能:全部變數
import time
import uuid
CASE_NUMBER = 0 # 用例編號
CASE_NAME = 1 # 用例名稱
CASE_DATA = 2 # 用例參數
CASE_URL = 3 # 用例介面地址
CASE_METHOD = 4 # 用例請求類型
CASE_CODE = 5 # 用例code
CASE_HEADERS = 6 # 用例headers
SQL_ROW = 0 # 預執行SQL的行號
SQL_COL = 1 # 預執行SQL的列號
五、寫一個run文件:只是用來執行的,業務和代碼剝離。
代碼如下:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 驗證包:介面測試腳本
import sys
import core.tezLog as log
import function.common as common
logging = log.getLogger()
"""1.外部輸入參數"""
path = sys.path[0] # 當前路徑
mole = sys.argv[1] # 服務模塊名
url = sys.argv[2] # 服務地址
host = sys.argv[3] # 資料庫地址
user = sys.argv[4] # 資料庫用戶名
password = sys.argv[5] # 資料庫密碼
db = sys.argv[6] # 資料庫名稱
"""2.根據mole獲取Sheet"""
logging.info("-------------- Execute TestCases ---------------")
sheet = common.get_excel_sheet(path + "/" + common.filename, mole)
"""3.數據准備"""
logging.info("-------------- Prepare data through MysqlDB --------------")
sql = common.get_prepare_sql(sheet)
common.prepare_data(host=host, user=user, password=password, db=db, sql=sql)
"""4.執行測試用例"""
res = common.run(sheet, url)
logging.info("-------------- Get the result ------------ %s", res)
"""這里的res是我們平滑升級的時候需要返回結果為TRUE才會繼續下面走。"""
六、查看測試報告(部署到jenkins會通過控制台查看)