初識httprunner

      網友投稿 1040 2025-04-01

      “一站式接口解決方案”。只需維護一份YAML/JSON/Pytest腳本,即可實現自動化測試、性能測試、線上監控、持續集成等多種測試需求。

      HTTPrunner3.0比2.0概念簡化,集成pytest(插件已達900+),框架引入pydantic系統,內置HTTP web server,測試用例編寫語法提示(鏈式調用rest-assured)。

      測試用例:獨立性(hook機制,setup/teardown)由一到多個有序的step構成,step可被引用。

      Debugtalk.py:作為項目根目錄的錨點,用例中的相對路徑會在當前目錄查找該文件,沒找到再去上層找。。把動態運算放在debugtalk.py中,在用例中進行引用。實現約定大于配置的思路。

      https://docs.httprunner.org/

      https://github.com/HttpRunner/HttpRunner

      1.準備python虛擬環境

      創建:python -m venv anny-env

      進入環境:執行anny-env\Scripts\activate.bat

      2.安裝httprunner

      pip install httprunner ?(3.1.4)

      檢查:httprunner -V ??????httprunner -h

      3.腳手架生成項目httprunner startproject ***

      這里用到原始命令httprunner,其他地方可以用子命令hrun

      4.生成的項目可通過ide打開,設置中要配置創建的python虛擬環境。

      5.通過hrun demo***.py運行demo.yml用例。

      用例運行邏輯將.yml/.json用例生成.py用例并格式化,用pytest運行。

      6.通過charles抓包導出為.har文件,用har2case命令將.har文件默認轉換為.py文件,使用pytest命令運行。

      7.也可將.har文件使用har2case -2y轉換為.yml文件,使用hrun命令運行。

      8.查看報告:默認安裝了pytest-html。hrun testcases --html=./reports/demo.html

      也支持allure。

      以mubu.com為例:

      生成腳本:

      1.?使用charles抓包mubu.com登錄并新建文檔錄入標題、內容,導出為mubu_login.har文件。

      2.?在pycharm中將.har文件轉換為.py文件并用Pytest直接運行OK.

      3.?查看回放后在mubu.com中生成的文檔,發現生成的文檔內容為空。

      定位腳本問題:

      排查方法:縮小范圍

      引用變量:${}

      1.關聯參數:找關聯參數進行引用變量的替換。

      參數關聯:提取參數

      .extract()

      .with_jmespath("body.data.id","docID")

      2.全局變量:對于memberId要通過charles看一下是通過服務端生成還是前端JS生成。如果請求使用memberId前沒有出現,就說明在前端生成的。這種情況不用非做關聯參數處理,但會存在較多接口存在該值,理解為一個全局變量,因此將其放在config中添加.variables(**{"memberId":"7506370717891848"}),將所有參數替換為${memberId}。全局變量的生效范圍只在當前用例中,如果多用例共享,在debugtalk.py中定義。

      3.把userid進行參數關聯。

      這里要注意extract()放的位置

      4.?代碼調整結束后回放成功,新生成一個demo文檔,內容也一致。

      5.?對腳本做更多的優化:csrf_token、SESSION不需要寫死,去掉。

      6.?data_unique_id做參數化。

      目的:腳本簡潔,沒有寫死的數據

      原則:看下數據是否從服務端返回的,如果是做參數化關聯。

      其他:

      1.?SLARDAR_WEB_ID:httprunner中的日志埋點的前端框架,每個請求中有一個唯一的埋點,接口請求的后端經過后端服務將鏈路日志撈取出來,方便問題定位,是前端生成的。

      2.?去掉cookies中一些無用的參數,如:reg_entrance,Hm_lvt_*,_gid,_gat,Hm_lpvt_*

      3.?Jwt-Token不能刪除但也不能寫死,需要提取并參數化關聯。注意Jwt-Token在jmespath中不支持直接-線,要用”Jwt-Token”引起來,不能用單引號。

      Base_url抽取:抽取后的請求url中去掉base_url。

      4.如果網站只有一個host,用base_url可實現整個替換。如果有兩個host,就無法全部替換。

      那就需要通過把host設置為全局變量的形式,然后在出現mubu.com的地方引用$host.

      這樣就實現了把所有請求中的mubu.com進行參數化。

      5.用全局變量抽取帳號、密碼。

      定義局部變量:在step中生效

      調整校驗器,增加assert.

      6.想在接口后等待指定時間:使用setup/teardown hook. sleep方法是寫在框架里的。

      在hook中調用函數時是需要知道函數的運行結果的,并期望結果能在后續使用。用到hook的另一種用法。

      7.模擬簽名算法:在debugtalk.py中定義函數

      用例中引用函數的值:

      用例解耦:

      初識httprunner

      1.把登錄用例抽取出來創建一個用例文件,需要引用登錄用例的地方這樣寫:

      對于用到的login中提取的參數,兩邊都進行export輸出變量值:

      參數化數據驅動:

      1.在yaml文件中添加參數:

      2.使用hmake生成pytest文件,引入了parameters庫。

      運行.yml文件就會發現運行了兩次。

      將生成的.py文件中的參數驅動代碼放入需要的文件中。

      @pytest.mark.parametrize("param",?Parameters({"index": [1,?2]}))

      def?test_start(self,?param):

      super().test_start(param)

      @pytest.mark.parametrize("param",?Parameters({"docTitle": ["demo-1",?"demo-2","demo-3"]}))

      引用函數生成參數列表:將生成的文件名稱函數寫入debugtalk中,調用函數。

      def?gen_doc_title(num):

      return?[get_random_title()?for?_?in?range(num)]

      @pytest.mark.parametrize("param",?Parameters({"docTitle":?"${gen_doc_title(3)}"}))

      對于數據文件比較多的時候,可以引用CSV文件,文件中用,分隔參數。引用時,多個參數用-連接,比如:“phone-password”:“${parameterize(data/accounts.csv)}”引用值。data/accounts.csv是路徑。注意執行時有兩組數據的話,會執行四次,參數值進行迪卡爾乘積,而不是兩次。

      查看報告:

      1.默認pytest-html ??hrun --html=login.html

      2.使用allure ?hrun --allulredir=reports/ ????allure serve reports/

      性能測試:

      1.pip install locust

      2.locusts -f testcases/mubu_login_test.py?以并發的形式把性能測試跑起來

      Python web前端

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:為什么表格中只顯示公式(表格單元格只顯示公式)
      下一篇:圣誕來了,給喜歡的人做個表白網站(附完整源碼)
      相關文章
      亚洲一区二区三区免费视频| 亚洲成AV人在线观看天堂无码| 亚洲色WWW成人永久网址| 亚洲国产香蕉人人爽成AV片久久 | 久久夜色精品国产嚕嚕亚洲av| 亚洲国产精品一区二区第一页免| 亚洲1区2区3区精华液| 亚洲女子高潮不断爆白浆| 亚洲第一男人天堂| 亚洲一区欧洲一区| 2020国产精品亚洲综合网 | 国产亚洲精品无码专区| 亚洲性久久久影院| 日日噜噜噜噜夜夜爽亚洲精品| 中文字幕亚洲一区二区三区| 国产黄色一级毛片亚洲黄片大全| 久久精品国产亚洲7777| 夜夜春亚洲嫩草影院| 国产亚洲高清不卡在线观看| 亚洲美女又黄又爽在线观看| 久久精品国产亚洲一区二区| 久久综合日韩亚洲精品色| 亚洲国产精品久久久久| 久久久亚洲AV波多野结衣| 亚洲性一级理论片在线观看| 国产成人精品日本亚洲专一区| 久久精品亚洲AV久久久无码| 亚洲色偷精品一区二区三区| 国产偷国产偷亚洲清高APP| 亚洲成av人片不卡无码久久| 中文字幕久久亚洲一区| 亚洲av无码无在线观看红杏| 亚洲邪恶天堂影院在线观看| 亚洲国产精品综合久久久| 亚洲 日韩经典 中文字幕| 久久亚洲AV成人无码国产最大| 亚洲精品无码久久久久AV麻豆| 亚洲日韩精品A∨片无码| 国产精品久久久亚洲| 亚洲视频在线观看免费视频| 国产 亚洲 中文在线 字幕|