用python做自動化測試
Ⅰ 怎麼用python做自動化測試
1新建一台Jenkins伺服器,安裝並配置好Jenkins2配置一個自動化測試腳本的代碼庫,可以使用Git或者SVN等版本控制工具。然後在Jenkins伺服器上配置一個Job,負責自動的同步最新代碼到Jenkins伺服器上。3配置要跑自動化測試的虛擬機VM,推薦干凈環境下安裝需要跑自動化測試的依賴軟體工具或者配置以及自動化測試工具(不提前安裝配置也行,可以在跑自動化之前用另外的腳本自動安裝配置),配置好之後關機並打一個snapshot鏡像快照,並命名為prebuild或其它。4新建一個JenkinsJob,用來跑自動化。配置需要連接並使用的自動化測試虛擬機,配置要構建的自動化測試框架xml腳本文件(後面步驟有說明)和target,以及要歸檔的測試報告,郵件發送等等。5接下來的重點就是自動化測試框架的xml腳本文件了,首先裡面定義一個target,負責獲取自動化測試對象的安裝包。6接著定義一個target(可選),負責從版本庫上獲取自動化測試腳本同步到Jenkins伺服器上(也可以直接使用JenkinsJob本身的插件配置來獲取代碼)。7定義一個target,負責連接到虛擬機伺服器,並恢復到虛擬機的原始狀態例如prebuild,然後開機8定義一個target,負責拷貝項目產品安裝包和自動化測試源代碼到目標虛擬機上。9定義一個target,負責連接到目標測試虛擬機,並打開自動化測試工具,然後運行自動化測試腳本10定義一個target,負責處理自動化測試報告文件和日誌文件並把它們從自動化測試虛擬機拷貝到Jenkins伺服器對應的Job工作空間下。11最後定義一個主target,按照上面的target流程依次調用。這個主target就是Jenkins伺服器上的自動化測試Job中配置的需要構建的Target。
Ⅱ 使用python做介面自動化測試容易嗎
為什么要做介面自動化測試?
在當前互聯網產品迭代頻繁的背景下,回歸測試的時間越來越少,很難在每個迭代都對所有功能做完整回歸。但介面自動化測試因其實現簡單、維護成本低,容易提高覆蓋率等特點,越來越受重視。
為什么要自己寫框架呢?
使用Postman調試通過過直接可以獲取介面測試的基本代碼,結合使用requets + unittest很容易實現介面自動化測試的封裝,而且requests的api已經非常人性化,非常簡單,但通過封裝以後(特別是針對公司內特定介面),可以進一步提高腳本編寫效率。
一個現有的簡單介面例子
下面使用requests + unittest測試一個查詢介面
介面信息如下
請求信息:
Method:POST
URL:api/match/image/getjson
Request:
{
"category": "image",
"offset": "0",
"limit": "30",
"sourceId": "0",
"metaTitle": "",
"metaId": "0",
"classify": "unclassify",
"startTime": "",
"endTime": "",
"createStart": "",
"createEnd": "",
"sourceType": "",
"isTracking": "true",
"metaGroup": "",
"companyId": "0",
"lastDays": "1",
"author": ""
}
Response示例:
{
"timestamp" : xxx,
"errorMsg" : "",
"data" : {
"config" : xxx
}
Postman測試方法見截圖:
測試思路
1.獲取Postman原始腳本
2.使用requests庫模擬發送HTTP請求**
3.對原始腳本進行基礎改造**
4.使用python標准庫里unittest寫測試case**
原始腳本實現
未優化
該代碼只是簡單的一次調用,而且返回的結果太多,很多返回信息暫時沒用,示例代碼如下
import requests
url = "http://cpright.xinhua-news.cn/api/match/image/getjson"
querystring = {"category":"image","offset":"0","limit":"30","sourceId":"0","metaTitle":"","metaId":"0","classify":"unclassify","startTime":"","endTime":"","createStart":"","createEnd":"","sourceType":"","isTracking":"true","metaGroup":"","companyId":"0","lastDays":"1","author":""}
headers = { 'cache-control': "no-cache", 'postman-token': "e97a99b0-424b-b2a5-7602-22cd50223c15"
}
response = requests.request("POST", url, headers=headers, params=querystring)
print(response.text)
優化 第一版
調整代碼結構,輸出結果Json出來,獲取需要驗證的response.status_code,以及獲取結果校驗需要用到的results['total']
#!/usr/bin/env python#coding: utf-8'''
unittest merchant backgroud interface
@author: zhang_jin
@version: 1.0
@see:http://www.python-requests.org/en/master/
'''import unittestimport jsonimport tracebackimport requests
url = "http://cpright.xinhua-news.cn/api/match/image/getjson"
querystring = { "category": "image", "offset": "0", "limit": "30", "sourceId": "0", "metaTitle": "", "metaId": "0", "classify": "unclassify", "startTime": "", "endTime": "", "createStart": "", "createEnd": "", "sourceType": "", "isTracking": "true", "metaGroup": "", "companyId": "0", "lastDays": "1", "author": ""
}
headers = { 'cache-control': "no-cache", 'postman-token': "e97a99b0-424b-b2a5-7602-22cd50223c15"
}#Post介面調用
response = requests.request("POST", url, headers=headers, params=querystring)#對返回結果進行轉義成json串
results = json.loads(response.text)#獲取http請求的status_codeprint "Http code:",response.status_code#獲取結果中的total的值print results['total']#print(response.text)
優化 第二版
介面調用異常處理,增加try,except處理,對於返回response.status_code,返回200進行結果比對,不是200數據異常信息。
#!/usr/bin/env python#coding: utf-8'''
unittest merchant backgroud interface
@author: zhang_jin
@version: 1.0
@see:http://www.python-requests.org/en/master/
'''import jsonimport tracebackimport requests
url = "http://cpright.xinhua-news.cn/api/match/image/getjson"
querystring = { "category": "image", "offset": "0", "limit": "30", "sourceId": "0", "metaTitle": "", "metaId": "0", "classify": "unclassify", "startTime": "", "endTime": "", "createStart": "", "createEnd": "", "sourceType": "", "isTracking": "true", "metaGroup": "", "companyId": "0", "lastDays": "1", "author": ""
}
headers = { 'cache-control': "no-cache", 'postman-token': "e97a99b0-424b-b2a5-7602-22cd50223c15"
}try: #Post介面調用
response = requests.request("POST", url, headers=headers, params=querystring) #對http返回值進行判斷,對於200做基本校驗 if response.status_code == 200:
results = json.loads(response.text) if results['total'] == 191: print "Success" else: print "Fail" print results['total'] else: #對於http返回非200的code,輸出相應的code raise Exception("http error info:%s" %response.status_code)except:
traceback.print_exc()
Ⅲ python和java哪個比較適合做自動化測試,和測試開發一般用哪種語言。
語言歷史:
Python:簡單易懂。Python誕生於1991年,這門語言的初衷就是為了讓程序員可以用更少的代碼,寫出一樣的程序,達到事半功倍的效果。Python化繁為簡,給程序員減輕了不少壓力,以至於業界衍生出:人生苦短,我學Python。
Java:地位穩定。Java誕生於1995年,是一門有class為單位,高度面向對象的高級編程語言,因為Java語言穩定,很多公司在做商業級別項目時,都會選擇Java語言。
語言優點:
Python:易於學習、語法簡潔。Python對比其他語言來說,更容易一些,因為Python語言簡潔明了,很多外行人也能讀懂它的代碼,Python語言不需要很豐富的詞彙,簡單明了直奔主題,只需要少量的代碼就能創建出功能。
Java:架構獨特、速度快。Java是一門面向對象的編程語言,吸收了C++語言的各種優點同時擯棄了缺點,Java是可以跨平台的,應用十分廣泛,速度快的同時又十分穩定。
語言發展:
Python:快速崛起。Python發展快速,這是一個不爭的事實,Python主要優勢就是在任何方面都很強大,尤其是數據分析、機器學習、人工智慧領域,Python是人工智慧時代的第一語言。
Java:無法取代。Java是非常高級的編程語言,全球百分之八十以上的伺服器後台用的編程語言都是Java,至今還沒有語言可以替代它。
語言應用:
Python:人工智慧的首選。Python主要應用於數據分析、人工智慧、游戲開發、機器學習、腳本開發、網路爬蟲等領域,是大數據、人工智慧時代的主力軍。
Java:壟斷企業級應用的開發。Java主要應用就是伺服器開發、web開發以及安卓開發,壟斷了企業級應用的開發。
總體情況來講,Python和Java各有各的優勢,至於哪個更適合自動化測試,在這里小編推薦首選Python。
Ⅳ Python做軟體自動化測試的入門提問
做自動化首先得選擇用什麼樣的測試工具,python只是用來編寫測試腳本用
目前支持python腳本的測試工具也有一些,web測試:selenium,性能測試:LR也支持,功能:QTP目前也支持,但這些工具傳統上都是只支持C/C++、VBS的,擴展支持python後效果怎樣不是很清楚了。另外,在安卓平台結合MonkeyRunner 測試手機軟體效果是很好的。
除此之外,python也可用於C/C++的單元測試。
Ⅳ 如何使用python做android的自動化測試
下面我們開始第一個簡單的Android UI自動化測試
1.使用adb命令連接真機或模擬器
2.打開uiautomatorviewer工具
3.使用uiautomatorviewer工具獲取應用的元素進行定位
4.簡單介紹unittest框架的使用方法
5.使用Python編寫貓寧考勤應用注冊模塊的自動化測試
1.使用adb命令連接真機或模擬器:
手機USB連接電腦,進入開發者模式;
cmd命令:adb devices ,查看手機是否連接
4.簡單介紹unittest框架的使用方法
Ⅵ Python可以做自動化測試嗎
python 可以做自動化測試。
但是需要安裝selenium模塊。
Ⅶ 如何使用python語言開展微信端網頁自動化測試
我之前是做自動化工作的,自己學了perl,
python,發現perl語法比較難,python比較簡單,可讀性也很好。現在python的應用很廣泛,人才需求也很大,學這個沒毛病。前期你可以去魯德這個測試知道平台看看,自動化測試的資料蠻多的。
Ⅷ 如何用python做自動化測試
目前大家對Python都有一個共識,就是他對測試非常有用,自動化測試里Python用途也很廣,但是Python到底怎麼進行自動化測試呢?今天就簡單的向大家介紹一下怎麼使用Python進行自動化測試,本文只是自己的一點點分享,若有錯誤,請大家多多批評指正。這里主要介紹的是一些Python測試的框架1、單元測試a、unittest:Python自帶的單元測試框架b、pyunit:Junit的Python版本2、使用Pyhon進行WindowsGUI測試這部分的功能主要就是和大家平時使用的QTP類似。在Windows下我們可以使用pywinauto這個開源的框架:/p/pywinauto/來個小例子:app.Notepad.MenuSelect("Help->AboutNotepad")app.AboutNotepad.OK.Click()app.Notepad.Edit.TypeKeys("pywinautoWorks!",with_spaces=True)呵呵,強大吧3、使用Python進行Web自動化測試使用Python進行Web自動化測試的工具有很多,這里就向大家推薦一下我比較熟悉的Selenium(WebDriver)吧。c、Pymeter
Ⅸ 源碼時代Python自動化測試的學習內容有哪些
用python做自動化測試,主要是介面測試和UI自動化測試。 自動化測試還要學習的有很多,selinum、webdriver、monkey、APP測試等等這些都要學習的,建議你去魯德,課程多樣化,學習比較扎實,自動化測試是主打課程
Ⅹ python自動化測試(這作業怎麼做)
利用id屬性在輸入框輸入jd?
from selenium import webdriver
import time
driver=webdriver.Firefox() #打開火狐瀏覽器
driver.get("http://www..com") #打開網路
time.sleep(1) /停頓 一下方便觀察
網路id為kw ,name為wd(屬性定位用到)
input = driver.find_element_by_id('kw') //通過id定位輸入框
input.send_keys('京東') // 在輸入框輸入京東 已經完成了
input.send_keys(Keys.ENTER) //這一步是搜索京東
你的作業 利用id定位京東輸入框
className = driver.find_element_by_class_name('b_searchbox') //將class參數填入
想查看輸入框信息我那三張截圖。 滑鼠右擊查看就行了 一般谷歌火狐都能看到