httprunner3.x詳細教程三(httprunner中testcase的構造)


下面這段話是從官網上copy的,我會講一下我的理解。如果有不對的地方歡迎留言。

                                                                                                                                                                        --成都-阿木木

 **歡迎加入測試交流群:自動化測試-夜行者(816489363)進行交流學習QAQ**

HttpRunner v3.x支持三種測試用例格式pytest,YAML和JSON。強烈建議以pytest格式而不是以前的YAML/JSON格式編寫和維護測試用例。

相互轉換格式關系如下圖所示:

 

記錄並生成測試用例

如果SUT(被測系統)准備就緒,最有效的方法是先捕獲HTTP流量,然后使用HAR文件生成測試用例。請參閱以Record & Generate testcase獲取更多詳細信息。

然后,基於生成的pytest測試用例,您可以根據需要進行一些調整,因此您需要了解測試用例格式的詳細信息。

測試用例結構

每個測試用例都是的子類HttpRunner,並且必須具有兩個類屬性:config和teststeps。

  • 配置:配置測試用例級別設置,其中包括base_url,verify,variables,export。
  • teststeps:teststep(List[Step])的列表,每個步驟都對應一個API請求或另一個測試用例引用調用。此外,variables/ extract/ validate/ hooks機制支持,可制作十分復雜的測試方案,可以參數傳遞、參數提取、斷言、以及其他hook機制,可以自定義鈎子函數,也支持pytest和、locust的相關操作,例如:我們可以增加一個pytest.ini文件,在其中進行測試用例目錄檢索的操作等

 

chain call

HttpRunner v3.x的最強大功能之一是chain call,您無需記住任何測試用例格式的詳細信息,並且在IDE中編寫測試用例時就可以智能地完成。其實就是IDEA的api代碼自動補全,讓大家不需要去記那么多的函數名。

config

每個測試用例都應該有一個config部分,您可以在其中配置測試用例級別的設置。

name(必填)

指定測試用例名稱。這將顯示在執行日志和測試報告中。

base_url(可選)

指定SUT的通用架構和主機部分,例如https://postman-echo.com。如果base_url指定,則teststep中的url只能設置相對路徑部分。如果要在不同的SUT環境之間切換,這將特別有用。

variables(可選)

指定測試用例的公共變量。每個測試步驟都可以引用未在步驟變量中設置的配置變量。換句話說,步驟變量比配置變量具有更高的優先級。

verify (可選)

指定是否驗證服務器的TLS證書。如果我們想記錄測試用例執行的HTTP流量,這將特別有用,因為如果沒有設置verify或將其設置為True,則會發生SSLError。

SSLError(SSLCertVerificationError(1,'[SSL:CERTIFICATE_VERIFY_FAILED]證書驗證失敗:證書鏈中的自簽名證書(_ssl.c:1076)')

export (可選)

指定導出的測試用例會話變量。將每個測試用例視為一個黑盒,config variables是輸入部分,而config export是輸出部分。特別是,當一個測試用例在另一個測試用例的步驟中被引用,並且將被提取一些會話變量以在后續測試步驟中使用時,則提取的會話變量應在配置export部分中進行配置。將測試用例的某些變量指定為全局變量。(PS:不配置export在另一個引用類中進行該累的變量調用時,直接export也是可以的,最好還是配置一下)

注意:為簡化起見,不推薦使用HttpRunner v2.x中的API概念。您可以將API視為只有一個請求步驟的測試用例。

下圖的意思是,我們有一個測試套件testsuite,套件中會有很多的測試用例testcase,testcase之間可以相互引用teststep,通過with_jmespath進行參數的提取,通過call引用其他測試用例類,然后通過export引用其他測試用例的變量

teststeps中會有很多step,也就是常說的測試步驟,一個step中只有RunRequest或者RunTestCase,step的先后順序,有step的前后控制,由step所處的位置由上到下執行。

RunRequest(名稱)

RunRequest 在一個步驟中用於向API發出請求,並對響應進行一些提取或驗證。

.name   

RunRequest 的參數用於指定測試步驟名稱,該名稱將顯示在執行日志和測試報告中。

.with_variables

指定測試步驟變量。每個步驟的變量都是獨立的,因此,如果要在多個步驟中共享變量,則應在配置變量中定義變量。此外,步驟變量將覆蓋配置變量中具有相同名稱的變量。(PS:注意參數傳遞的格式使用**{},使用關鍵字參數解包的方式進行參數傳遞給with_variables),參數引用使用"$變量名",如果是函數引用使用"${函數名()}"

method(url)

指定HTTP方法和SUT的URL。這些對應於method和url參數requests.request

如果base_url在config中設置,則url只能設置相對路徑部分。如果在Config中設置了baseurl,method中只能設置相對路徑,可選參數為get/post/put/delete/等。

.with_params

指定請求網址的查詢字符串。這對應於的params參數requests.request

.with_headers

為請求指定HTTP標頭。這對應於的headers參數requests.request

.with_cookies

指定HTTP請求cookie。這對應於的cookies參數requests.request

.with_data

指定HTTP請求正文。這對應於的data參數requests.request

.with_json

在json中指定HTTP請求正文。這對應於的json參數requests.request

extract(數據提取)

.WITH_JMESPATH

使用jmespath提取JSON響應主體。

with_jmespath(jmes_path:文字,var_name:文字)

  • jmes_path:jmespath表達式,有關更多詳細信息,請參考JMESPath教程
  • var_name:存儲提取值的變量名,可以在后續測試步驟中引用它

validate

.ASSERT_XXX

使用jmespath提取JSON響應主體並使用期望值進行驗證。

assert_XXX(jmes_path:文本,期望值:任何,消息:文本=“”)

  • jmes_path:jmespath表達式,有關更多詳細信息,請參考JMESPath教程
  • Expected_value:指定的期望值,變量或函數引用也可以在此處使用
  • 消息(可選):用於指示斷言錯誤的原因

 

RunTestCase(名稱)

RunTestCase 在一個步驟中用於引用另一個測試用例調用。

.name 

RunTestCase 的參數用於指定測試步驟名稱,該名稱將顯示在執行日志和測試報告中。

.with_variables

指定測試步驟變量。每個步驟的變量都是獨立的,因此,如果要在多個步驟中共享變量,則應在配置變量中定義變量。此外,步驟變量將覆蓋配置變量中具有相同名稱的變量。

.call

指定引用的測試用例類。你在引用另一個測試用例的step中的參數時,需要先指定引用的測試用例類

.export

指定會話變量名稱以從引用的測試用例中導出。導出的變量可以通過后續測試步驟step進行引用。導出的是step中的jmespath提取的變量,export之后,這個變量是全局變量,但是不能再confg中進行設置,因為測試類的引用是在step中進行的,而類的初始化是先初始化config,然后初始化teststeps,所以參數的傳遞在step之間

 

**歡迎加入測試交流群:自動化測試-夜行者(816489363)進行交流學習QAQ**


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM