<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      精美可視化:Python自動化生成漂亮的測試報告

      運用Python的Unittest、數據驅動測試(DDT)、Excel、Jinja2和HTML技術,構建一個能夠自動生成精美可視化測試報告的自動化測試框架


      思路流程

      1. 封裝讀取數據,讓所有數據都能夠再excel中填寫,不再填寫任何一行邏輯代碼

      2. 通過unittest框架的discover()找到匹配的測試用例,由HTMLTestRunner的run()方法執行測試用例并生成最新的測試報告。

      3. 集成TestResult,增加一些獲取數據邏輯,將數據封存輸出,結合jinja2模板引擎,生成報告

      4. 將報告路徑及收集的結果參數傳給發送郵件,釘釘通知,企業微信通知的方法,再run用例結束后,自動發送數據到所需的位置

      5. 這里不展開對具體每一步得詳細介紹,直接結果導向開始講解。

      1. 數據驅動測試(DDT):以數據為驅動的智慧
      為了匹配框架使用,重新寫了類似ddt的裝飾器,結合用例名稱生成測試函數名稱,這樣就兼容了unittest的框架特性。核心代碼:

      def list_data(datas):
          """
          :param datas: Test data
          :return:
          """
          def wrapper(func):
              setattr(func, "PARAMS", datas)
              return func
          return wrapper
      
      
      def yaml_data(file_path):
          """
          :param file_path:YAML file path
          :return:
          """
          def wrapper(func):
              try:
                  with open(file_path, "r", encoding="utf-8") as f:
                      datas = yaml.load(f, Loader=yaml.FullLoader)
              except:
                  with open(file_path, "r", encoding="gbk") as f:
                      datas = yaml.load(f, Loader=yaml.FullLoader)
              setattr(func, "PARAMS", datas)
              return func
          return wrapper
      
      

      2.unittest框架妙用:高度封裝精簡腳本代碼

      將上述的裝飾器裝飾測試方法,通過多集成,、封裝及反射搗鼓一波,最終的執行腳本代碼,只有么關鍵是十來行了:

      test_file = Config.TEST_CASE  # 獲取 excel 文件路徑
      excel = DoExcel(test_file)
      
      test_case, databases, initialize_data, host = excel.get_excel_init_and_cases()
      
      
      @ddt
      class TestProjectApi(unittest.TestCase):
          maxDiff = None
          action = Action(initialize_data, databases)
      
          @classmethod
          def setUpClass(cls) -> None:
              cls.action.load_modules_from_folder(extensions)
      
          def setUp(self) -> None:
              pass
      
          @list_data(test_case)
          def test_api(self, item):
              sheet, iid, condition, st, name, desc, method, expected = self.action.base_info(item)
              if self.action.is_run(condition):
                  self.skipTest("這個測試用例聽說泡面比較好吃,所以放棄執行了!!")
              regex, keys, deps, jp_dict, ex_request_data = self.action.extractor_info(item)
              self.action.pause_execution(st)
              self.action.exc_sql(item)
              if self.action.is_only_sql(method):
                  self.skipTest("這條測試用例被 SQL 吃了,所以放棄執行了!!")
              # prepost_script = f"prepost_script_{sheet}_{iid}.py"
              # item = self.action.load_and_execute_script(Config.SCRIPTS_DIR, prepost_script, "setup", item)
      
              self.action.send_request(host, method, ex_request_data)
              self.action.analysis_response(sheet, iid, name, desc, regex, keys, deps, jp_dict)
              self.action.execute_validation(excel, sheet, iid, name, desc, expected)
      
          @classmethod
          def tearDownClass(cls) -> None:
              excel.close_excel()
      
      

      3.Excel王者:用例編寫快速簡單易過濾篩選
      所有測試數據,填寫在excel中,需要評審的時候,直接將excel丟給開發,一勞永逸,excel的強大,可不是三言兩語能夠解釋清楚的,用例如下編寫

      """封裝讀取excel“""
      ...
      sheets = eval(self.get_excel_init().get(FieldNames.SHEETS))
              for sheet_name in sheets:
                  sheet = self.wb[sheet_name]
                  max_row = self.get_max_row(sheet)
                  max_column = self.get_max_column(sheet)
                  first_header = []
                  for i in range(1, max_column + 1):
                      first_header.append(sheet.cell(1, i).value)
                  for i in range(2, max_row + 1):
                      sub_data = {}
                      for k in range(1, max_column + 1):
                          sub_data[first_header[k - 1]] = sheet.cell(i, k).value
                          sub_data[FieldNames.SHEET] = sheet_name
                      yield sub_data
      ...
      
      

      **4.記錄日志:整潔的日志記錄
      **

      用例在運行過程中,日志信息的輸出也是非常重要的一個環節,我們來看看日志的展示:

      4. 生成美觀的HTML報告:多種樣式報告任君選擇

      重寫優化了unittestReport的核心代碼,測試結果不再是枯燥的一串文字,而是以漂亮的HTML展示。報告中的每個測試用例都得到了詳盡的展示,包括輸入數據、預期輸出和實際結果,使得整個測試過程一目了然。
      4.1 樣式一

      4.2 樣式二

      如上的報告,是不是很過癮,KPI考核又得一分

      4.3 Excel中測試用例結果回顯記錄

      5. 集成通知機制:釘釘、企業微信、郵件

      生成美觀的測試報告,及時分享給團隊也是很有逼格的。通過SMTP庫、釘釘和企業微信等渠道,可以自動發送測試報告,還能夠確保團隊成員即時了解測試進展和結果,想發就發,想@就@。

      郵件通知

      釘釘通知

      企業微信通知

      閑話說一說:測試人只做測試專業的事就好(點點點.....),不要整天為配置`jenkins`掉頭發了,也不要一天到晚搜allure怎么配置,怎么修改啊,怎么又亂碼不顯示完整,又英文啥雜七雜八的而煩惱!!

      彩蛋:對框架感興趣的小伙伴,加勇哥進群,群公告自取~

      總結

      以上就是勇哥今天為各位小伙伴準備的內容,如果你想了解更多關于Python自動化測試的知識和技巧,歡迎關注我:公眾號\博客\CSDN\B站:測試玩家勇哥;我會不定期地分享更多的精彩內容。感謝你的閱讀和支持!


      題外話,勇哥打算把新建的技術交流群,打造成一個活躍的高質量技術群。工作中遇到的技術問題,都可以在里面咨詢大家,還有工作內推的機會。有興趣的小伙伴,歡迎加我(記得備注是進群還是報名學習)

      長按上方二維碼2秒,關注我


      勇哥,10年落魄測試老司機,技術棧偏python,目前在一家超大型房產公司擔任自動化測試主管,日常工作比較繁雜,主要負責自動化測試,性能測試、軟件質量管理及人員管理。工作之余專注于為粉絲進行簡歷修改、面試輔導、模擬面試、資料分享、一對一自動化測試教學輔導等副業發展。目前已服務十多位小伙伴,取得高薪offer。

      關注公眾號,測試干貨及時送達

      往期精選文章:
      接口自動化測試項目2.0,讓你像Postman一樣編寫測試用例,支持多環境切換、多業務依賴、數據庫斷言等
      揭秘抓包利器:Python和Mitmproxy讓您輕松實現接口請求抓取與分析!
      構建高效的接口自動化測試框架思路
      Pytest 快速入門
      接口自動化之測試數據動態生成并替換
      requests模塊該如何封裝?
      接口自動化如何封裝mysql操作
      一文看懂python如何執行cmd命令
      最通俗易懂python操作數據庫
      python-Threading多線程之線程鎖
      python正則一篇搞掂
      性能測試之必備知識

      性能分析思

      Python + ChatGPT來實現一個智能對話的釘釘機器人
      一文看懂python如何執行cmd命令
      posted @ 2023-08-18 17:53  測試玩家勇哥  閱讀(984)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 中文字幕国产精品日韩| 治县。| 日本牲交大片免费观看| bt天堂新版中文在线| 国产一区二区不卡视频在线| 国产亚洲精品AA片在线爽| 亚洲亚洲人成综合网络| 浪卡子县| 亚洲无线码中文字幕在线| 国产乱码日韩亚洲精品成人| 亚欧乱色精品免费观看| 丰满无码人妻热妇无码区| 亚洲色大成网站WWW久久| 欧美videosdesexo吹潮| 国产亚洲精品AA片在线爽| 四虎www永久在线精品| 亚洲成av人片不卡无码手机版| 亚洲高清国产拍精品熟女| 国产欧美一区二区日本加勒比| 永州市| 久久亚洲精品中文字幕波多野结衣| 美乳丰满人妻无码视频| 亚洲性无码av在线| 人妻中文字幕不卡精品| 国产av无码专区亚洲av软件| 亚洲人成色77777在线观看| 久久一级精品久熟女人妻| 亚洲一区二区三区人妻天堂| 天天综合天天添夜夜添狠狠添| 91久久国产成人免费观看| 国产馆在线精品极品粉嫩| 免费视频一区二区三区亚洲激情| 另类专区一区二区三区| 口爆少妇在线视频免费观看| 国产免费午夜福利757| 腾冲县| 国产精品久久久久影院色| 一区二区三区精品偷拍| 亚洲精品成人一二三专区| 97久久久亚洲综合久久| 国产短视频一区二区三区|