本文目錄一覽:
- 1、python調用com,如何完成word表格操作
- 2、python為何多線程報錯,單線程沒問題
- 3、python如何調用ATL的COM組件
- 4、如何用python編寫com組件
- 5、求教vbs調用python com組件的問題
- 6、如何構建基於Quality Center的Web服務
python調用com,如何完成word表格操作
word中doc這個格式的文件是微軟特有格式,微軟沒有向外公開任何的api介面文檔,
只能通過微軟提供的OLE組件來提其COM介面,只要你的機器上安裝了Offices完整的辦公軟體,在安裝目錄下面有個MSWORD.OLB組件,導入這個即可。
1、相關操作Excel有MSPPT.OLB,EXCEL.exe等。
python為何多線程報錯,單線程沒問題
你這個是wmi在多線程中天生的問題,python的wmi的官方文檔中有說明,網頁鏈接這個地址中,你仔細看「Use WMI in a thread」這一小節。
但是那個解決方案不是很好用,有些問題上還是會報錯,推薦你用wmic,多線程中這個要好用很多。網頁鏈接
python如何調用ATL的COM組件
查到一點資料,鏈接放在附件里。是一個在Python中使用COM介面的小教程。
如何用python編寫com組件
可以,在vbs中用wshell.run執行腳本文件,前提是你系統中已部署好pyhton: Set oShell = WScript.CreateObject (“WSCript.shell”)oShell.run “s.py”Set oShell = Nothing
求教vbs調用python com組件的問題
這個與腳本部件.wsc文件 或是其他預言編寫的.dll文件一樣
要使用就要先註冊
目測VBS代碼沒有問題,如果沒有顯示函數和屬性應該是沒有寫入註冊表
如何構建基於Quality Center的Web服務
如何構建基於Quality Center的Web服務
目前各大公司都在開始嘗試構建符合自己公司業務需求的系統性測試平台。在最近很多次的由Infoq組織的Qcon和淘寶的技術嘉年華上,我們都可以看到來自百度,阿里,騰訊等大公司分享的他們內部的測試平台。
如何構建一個優秀的測試平台,在技術選型上我們基本是兩個方案,一個方案是集成現有的各個子的測試系統。在開源項目大行其道的今天,很多企業都在其內部採用了開源的測試工具,比如TestLink 這樣的測試管理工具,Mantis,Bugfree這樣的Bug管理工具,以及Fitnesse,Selenium這樣的自動化測試工具和框架。這類的測試工具的一個共通的特點是他們都是基於比較新的開發技術構建的,其次由於他們的開源的特點,我們也可以更具我們需要在源碼層面對他們進行修改。這一類的集成還是比較容易做的。第二個方案就是完全重新寫一套全新的測試平台,從測試管理,bug管理到case的執行層面都進行自己構建。這樣的方案的好處在於我們對於整個測試平台的控制力最大,但是相對的 ,對於我們測試團隊本身的開發架構能力的要求也是非常高的。一般的中小企業也很難有成本上的投入。
但是基於這兩個方案之外,我們還發現了一個目前在企業中存在一個孤島,就是目前大多數的企業還是在使用Quality Center 這樣的一套商業的測試管理軟體。QC是惠普公司推出的一套成熟的商業測試管理工具,覆蓋測試用例的管理,Bug的管理,測試資源的管理等功能,幾乎涵蓋了我們在測試工作中可能遇到的方方面面的問題。同時QC在系統集成上面,可以很好的和QTP和LoadRunner這樣兩個同門師兄弟進行集成。除此之外,我們就鮮有看到其他和QC進行集成的項目和工具了。
由於在構建符合我們自由需求的測試管理平台的時候,我們發現我們現有的大量的case是直接採用開源的自動化測試工具進行執行和管理的。同時我們也發現了我們的QC系統目前而言屬於一個擱置的狀態,當中也存放一些歷史的手工測試的case。出於一定的考慮,我們還是希望可以重新把QC納入到我們的日常工作中來,但是我們也希望可以很好的把QC和我們的現有的自動化測試框架進行集成。
QC提供了一套叫做OTA的API來允許外部的系統和QC進行集成。QC的API是完全基於VB6來構建的,記住是VB6,不是VB.net,所以這個完全是個老古董的技術了,估計目前很少有人會做VB的開發了。不過好在QC提供了一套COM組件來方面我們進行調用,所以我們就計劃構建一個基於QC的WebService,通過這個WebService來把QC和我們其他的項目進行集成,同時也把QC作為一個底層的存儲平台來存儲我們的Case的執行結果。
在技術的選型上,我們選擇使用Python來進行WebService的開發。採用Webpy這個輕量級的Web框架來做Http服務,同時我們採用了Python的Win32com模塊來方便我們直接通過Python的代碼來調用QC的COM組件裡面的相關方法。獲取QC的COM組件的方法非常簡單,只要你在瀏覽器訪問了Quality Center的頁面以後,就可以在installation drive:\Program Files\Common Files\Mercury Interactive\Quality Center裡面找到OTAClient.dll 。 我們不需要關注這個OTAClient.dll的路徑,因為Python的Win32Com的模塊會自動找到對應的DLL庫。這裡要提一點的是操作系統的影響。QC是基於32位的瀏覽器,所以我們的Python必須要使用32位的版本,同時也要安裝32位 版本的Win32Com模塊。否則我們會在調用COM組件的時候遇到問題。
……………………
查看全文請點擊下載:
解決了連接的問題以後,我們就可以很方便的使用QC的OTA的API來對QC進行操作了。整個QC的資料庫的架構相對比較複雜,這個我會在下一期的文章中來介紹。這裡我們來看一下如何通過一個TestSetID來獲取整個TestSet。
def get_testset(testsetid,testset_factory):
try:
testset = testset_factory.Item(testsetid)
return testset
except Exception,e:
print e
raise qcExceptions.TsInstanceException(“can’t get the tsinstance_list by setid = %s” % testsetid)
方法中的testset_factory是通過TDConnection來獲取的,表示的是一個TestSet的工廠對象,可以通過TestSetID來獲取一個TestSet。具體可以參考OTA的API參考文檔。
每一個執行的結果是保存在一個Run的實例裡面的,一個TestInstance可以有多個Run的實例對象。QC的API在一定程度上比較類似MySQL的API,在對於Test,Run這樣對象的更新是不會直接反映到QC的系統中去的,我們需要進行一個Post的提交的動作,這裡展示一個如何給一個TestInstance添加一個執行結果的方法。
_runFactory = tsinstance.RunFactory
_newRun = _runFactory.AddItem(None)
if tsinstance.ID in failcase_ids:
newRun.Status = QC_STATUS[1]
else:
newRun.Status = QC_STATUS[0]
_newRun.Name = tsinstance.TestName
_newRun.Post()
這裡要註明一下,QC的寫的操作是很耗時的,我們最初採用同步的方式進行工作,整個服務完全無法運作,後來我們發現,當我們的TestSet中有大量的Case的時候,整個寫QC的操作非常的緩慢。後來我們就採用了非同步的方式,把讀寫的操作分離了。最後給大家看一個我們做的性能的測試,紅線的部分表示的是TestSet中有差不多1000個Case的狀態需要更新,藍色的部分表示只有10個Case需要更新。我們可以看到寫入QC的時間的消耗,單位是秒。
原創文章,作者:SLHPI,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/329884.html