利用tox打造自動自動化測試框架

2020-11-29 紙鶴視界

什麼是tox

tox官方文檔的第一句話 standardize testing in Python,意思就是說標準化python中的測試,那是不是很適合測試人員來使用呢,我們來看看他究竟是什麼?

根據官方文檔的解釋,tox是一個管理測試虛擬環境的命令行工具,可以支持穿件隔離的python環境,在裡面可以安裝不同版本的python解釋器和項目的各種依賴庫,可以進行自動化測試、打包以及持續集成。

tox能做什麼

創建測試虛擬環境運行靜態代碼分析與測試工具自動化構建包針對 tox 構建的軟體包運行測試檢查軟體包是否能在不同的 Python 版本/解釋器中順利安裝統一持續集成(CI)和基於命令行的測試怎麼配置tox

安裝tox

使用pip install tox安裝,在命令行執行tox -e envname運行指定的測試環境

tox配置

tox的行為既可以通過命令行來控制也可以通過配置文件進行控制,支持有以下三種形式的配置文件

pyproject.tomltox.inisetup.cfg# tox (https://tox.readthedocs.io/) is a tool for running tests# in multiple virtualenvs. This configuration file will run the# tests suite on all supported python versions. To use it, "pip install tox"# and then run "tox" from this directory.[tox]envlist = py36skipsdist = True# 設置pip源和依賴版本indexserver = default = http://mirrors.aliyun.com/pypi/simple/[testenv]deps = pytest records pymysql jinja2 requests objectpath arrow pytest-html redisinstall_command = pip install --trusted-host mirrors.aliyun.com {opts} {packages}[testenv:dev]setenv = env = dev; 告訴tox在每個測試環境裡運行pytestcommands = pytest --junitxml=junit-{envname}.xml;只運行廣告相關的測試用例[testenv:t_a]setenv = env = devcommands = pytest -v tests/ad--junitxml=junit-{envname}.xml;只運行測試環境APP相關測試用例;只運行APP相關測試用例[testenv:t_i]setenv = env = devcommands = pytest -v tests/ivwen --junitxml=junit-{envname}.xml[testenv:t1_i]setenv = env = t1commands = pytest -v tests/ivwen --junitxml=junit-{envname}.xml[testenv:pro]setenv = env = pro; 通過command line往環境變量裡寫測試還是線上的標識,config根據標識從環境變量裡去讀取指定文件; 或者通過插件的形式,能夠配置各個環境的文件,根據命令行參數指定把那個文件放入指定讀取目錄command = pytest[testenv:smoke][pytest]markers = smoke getaddopts = -rsxX -l --tb=short --strictxfail_strict = trueminversion = 3.0norecursedirs = .* venv src *.egg dist buildtestpaths = testspython_classes = *Test Test* *Suitjunit_family=xunit1以上配置解釋如下:

[tox]節點是對tox進行配置envlist指定環境列表,多個環境用逗號隔開,比如py36,py37

skipsdist 指定tox在運行過程中跳過打包環節,因為當前這個項目沒有打包的需求,所以這裡設置為true,這個和自動化測試框架的設計有關。

indexserver 指定pip的安裝源

[testenv]節點是對測試環境進行配置,這個是根測試環境的配置,下面還可以對不同的測試環境進行配置,都可以繼承這個節點deps 指定項目的python依賴的第三方包

install_command 定義pip安裝命令參數

[testenv:dev]這個節點是定義測試環境,繼承根環境配置setenv 設置環境變量,在項目中可以讀取環境變量,從而決定要運行哪個環境的配置,比如tox -e dev,意思就是說在測試環境運行測試用例,tox -e prod在生產環境運行測試用例

commands 指定pytest的運行方式,其他環境的節點配置與此相似。

[pytest]節點可以對pytest進行配置addopts 指定pytest的命令行參數xfail_strict 設置預期失敗的case如果通過了,則標記為失敗minversion 指定tox的最小版本norecursedirs 指定哪些目錄不用遞歸查找測試用例testpaths 指定測試用例的搜索目錄python_classes 指定測試用例的搜索規則當然以上的配置只是tox一部分,還有很多,關注官方文檔

tox項目實戰

下面我們以 tox、pytest打造一個自動化測試框架

項目搭建

新建一個api-auto-test文件夾,在文件夾裡添加一個tox.ini文件,輸入上面的配置再分別新建一個src和tests目錄,src用於存放封裝的一些共有的內容,tests用於存放測試用例src目錄內容如下

ad和biz是對不同業務進行的封裝,裡面包括接口調用以及資料庫相關操作

common是各個業務模塊公共的部分,包括請求發送、資料庫連結基礎操作封裝、配置等,主要來看一下config的裡的內容:

class Config: '''公共配置'''class DevConfig(Config): '''測試環境配置'''class ProdConfig(Config): '''生產環境配置''' # 環境切換 _MAPPING = { 'dev': DevConfig, 't1': T1Config, 'pro': ProConfig,}# 這裡根據tox設置的環境變量,來決定使用哪一個環境的配置,從而實現不同環境環境的切換config = _MAPPING.get(os.getenv("env"), DevConfig)運行測試用例tox -e dev

以上是執行過程以及測試結果,會生成junit.xml格式的測試報告,當然也可以使用pytest-html或者其他測試報告,都很方便。

歡迎大家去 我的博客瞅瞅,裡面有更多關於測試實戰的內容哦!!

相關焦點

  • 禪道ZTF 發布 2.2 版本,新增對持續集成、單元和自動化測試框架的...
    ZTF 是一款用GO語言編寫的開源自動化測試框架,支持 Python、Ruby、Lua、Tcl、PHP、Perl、Javascript
  • 4個不錯的Python自動化測試框架,Robot Framework有哪些優勢?
    隨著技術的進步和自動化技術的出現,市面上出現了一些自動化測試框架。只需要進行一些適用性和效率參數的調整,這些自動化測試框架就能夠開箱即用,大大節省了測試時間。而且由於這些框架被廣泛使用,他們具有很好的健壯性,並且具有廣泛多樣的用例集和技術來輕易發現微小的缺陷。以前,測試團隊接手一個項目,他們不得不為這個項目構建一個自動化測試框架。
  • 觀點 傳統銀行敏捷自動化測試探索
    其中所用到的一些自動化測試框架工具,作者深入敏捷轉型項目開發過程中自動化軟體測試,希望通過本文拋磚引玉,拓展自動化測試思路,找到適合自身特點,安全可靠的自動化測試方法。現狀分析俗話說:「工欲善其事、必先利其器。」
  • web 自動化測試框架 TestCafe :聽說用過的人都愛上了它
    TestCafe 介紹: TestCafe 是一款基於 Node.js 的端到端 Web 自動化測試框架,支持 TypeScript 或 JavaScript 來編寫測試用例,運行用例,並生成自動化測試報告。
  • 風河與百度合作自動駕駛平臺 利用阿波羅平臺打造自適應軟體框架
    蓋世汽車訊 據外媒報導,當地時間1月7日,美國智能邊緣軟體提供商風河公司(Wind River)宣布與中國百度公司合作,研發自動駕駛汽車解決方案。目前,風河已經與百度聯合開發了一個概念驗證,即一個利用百度阿波羅自動駕駛開放平臺打造的AUTOSAR自適應軟體框架,以滿足新一代軟體定義汽車帶來的特定挑戰。百度是全球最大的中文網際網路搜尋引擎、網際網路綜合信息服務公司、全球領先的人工智慧(AI)平臺公司。
  • 項目案例:手把手教你做自動化測試,記一次Appium框架運行實例!
    眾所周知,Appium是移動端界面自動化中最常用的開源框架之一,它能夠支持 iOS 平臺和 Android 平臺上app及web應用測試,支持Mac,Windows作業系統,並且支持多種語言,java、python、php、C#、js等,讓你不受程式語言的束縛 。下面我將展示Appium框架應用測試的一個具體實例。
  • 一文教你使用Jenkins集成Junit自動化測試,超簡單!
    隨著技術的發展,Devops的概念越來越深入人心,Devops使得構建、測試、發布軟體能夠更加地快捷、頻繁和可靠。DevOps對應用程式發布的有著重要影響,具備DevOps能力則發布軟體產品時風險更低,其中一個重要的原因就是自動化,減少了人工幹預,強大的部署自動化手段確保部署任務的可重複性、減少部署出錯的可能性。
  • Selenium自動化測試——Frame框架定位
    Frame是HTML框架結構常用的一種布局格式,共有三種形式:frameset、frame及iframe。2、Frame:在Frameset下面設置Frame,實現某個框架頁面,必須嵌套在Frameset中,無法單獨存在。3、Iframe:在某個頁面嵌入一個HMTL窗口信息,可脫離Frameset應用,框架屬性有自己定義。
  • 自動化診斷測試工具Vader
    (如需了解更多診斷協議的信息,請點擊這裡:基於ISO-14229標準的UDS診斷協議介紹)而正是在診斷測試越來越受到重視的今天,傳統的手動測試早已無法滿足目前大批量,高速度,高效率的測試需求。由此,自動化測試代替手動測試是歷史的必然。所以今天小編要給大家分享的正是由蔚赫信息開發的自動化診斷測試工具——Vader!
  • 自動化測試的測試模型有哪些?優缺點分別是什麼?
    自動化測試的測試模型有哪些?測試行業從業者需要掌握的測試模型有線性測試、模塊化驅動測試、數據驅動測試以及行為驅動測試 ,這些測試模型的優缺點也十分鮮明。下面我們一起來詳細分析一下吧!2、模塊化驅動測試(1)概念:將重複的操作獨立成功共模塊,當用例執行過程中需要用到這一模塊操作時則被調用。操作+(重複操作,數據)混合在一起。例如,自動化測試的執行需要保持測試用例的獨立性和完整性,所以每一條用例在執行時都需要登錄和退出操作,so可以把登錄和退出的操作封裝為公共函數。
  • 清華發布首個自動圖學習框架,或有助於蛋白質建模和新藥發現
    當前,人工智慧領域的自動圖機器學習研究悄然興起,小到蛋白質分子結構,大到城市交通網絡,都有自動圖機器學習的用武之地。澎湃新聞(www.thepaper.cn)記者從清華大學計算機系朱文武教授領導的網絡與媒體實驗室獲悉,該實驗室於2020年12月21日發布了世界首個自動圖學習框架與開源工具包AutoGL。
  • 意法半導體與愛德萬測試合作開發先進IC自動測試單元系統
    本文引用地址:http://www.eepw.com.cn/article/202012/420849.htm●   定製化設計系統採用工業 4.0概念,能最大程度地減少停機時間和擁有成本,同時提高半導體測試作業的自動化程度、質量和良率●   整合先進測試設備、自動送料車與全套監控軟體,實現無縫操作和更高性能這套先進測試單元由愛德萬的
  • 十個最流行的軟體測試工具!
    支持自動錄製動作和自動生成 .Net、Java、Perl等不同語言的測試腳本。許多企業更喜歡Selenium,是因為該工具與各種程式語言兼容,並且可以與測試框架集成。它的優勢在於它是開源的,可以很容易地與其他工具和框架集成。
  • 全程手把手教你實現Android自動化測試,實踐案例分享
    2、中間是起的Appium的服務,Appium在這邊起了一個Server(4723埠),跟seleniumWebdriver測試框架類似,Appium支持標準的WebDriver SONWireProtocol 。在這裡提供了一套web服務,Appium Server接收web driver 標準請求,解析請求內容,調用對應的框架響應操作。
  • 您需要知曉的20款測試工具庫
    本文向您介紹20種自動化測試工具與庫,其中包括一些對於自動化測試、單元測試、以及各種其他類型測試需求非常實用的工具。希望它們能夠對您的項目有所幫助。許可證:免費5.WebdriverIOWebdriverIO是一款基於JavaScript的自動化測試框架。它能夠讓您基於Webdriver協議和Appium自動化技術開展測試。它不但支持常用的BDD/TDD(行為驅動開發/測試驅動開發)測試框架,也能夠使用Sauce Labs、BrowserStack或TestingBot,在本地或雲中運行各種測試。
  • 阿里巴巴達摩院發布首個自動駕駛測試平臺,日均可測試800萬公裡
    Waymo早在2017年就開發了Carcraft,百度在2018年底和Unity公司合作打造了仿真測試平臺,2019年底騰訊也基於其強大的遊戲引擎基礎開發了TADSim自動駕駛仿真測試軟體。除此之外,華為、英特爾、微軟等都有涉獵,可見自動駕駛路測模擬仿真市場的火熱。
  • 騰訊IEG開源AI SDK:自動化測試吃雞、MOBA類遊戲
    機器之心報導編輯:陳萍、魔王SDK 還能自動玩遊戲?這個 SDK 有點「酷」。近日,騰訊互娛(IEG)開源了一款名為 GAME AI SDK 的自動化測試平臺,該平臺封裝好了多種工具供開發者使用,目前支持的遊戲類型有跑酷類、吃雞類、射擊類、MOBA 類等。
  • 常用的軟體測試工具大全
    其他工具與自動化測試框架:Rational Functional Tester、Borland Silk系列工具、WinRunner、Robot等。國內免費軟體測試工具有:AutoRunner和TestCenter。1.Winrunner 最主要的功能是自動重複執行某一固定的測試過程。
  • ASAM正在成為自動駕駛場景模擬仿真測試標準引領者
    圍繞智能汽車發展,各項測試標準的構建正處於關鍵期,這不僅決定著相關技術的發展水平,也攸關各國家(地區)智能汽車未來的發展格局。而從目前的發展態勢看,中國汽車技術研究中心有限公司(以下簡稱「中汽中心」)深入研究的由ASAM(德國自動化及測量系統標準協會)制訂並推廣的OpenX標準正在引領自動駕駛場景模擬仿真測試標準的發展。
  • 未來已來,人工智慧測試勢不可擋:介紹9款AI測試工具
    利用基於機器學習(ML) / AI進行自動維護(能夠將來自不同頁面/瀏覽器/設備的類似變化組合在一起);  修改比較算法,以便能夠辨別哪些更改是有意義的、顯著的;  能夠自動理解哪些更改更可能是一種缺陷還是一種期望,就這種差異進行排序;  很多這些事情在行動中看起來還為時過早,但看著路線圖會讓你了解現在有多少AI被納入測試工具公司的路線圖。