原创 Pytest Fixture Notes

關於pytest fixtures,根據官方文檔介紹: fixture 用於提供一個固定的基線,使 Cases 可以在此基礎上可靠地、重複地執行。對比 PyUnit 經典的setup/teardown形式,它在以下方面有了明顯的改進:

原创 使用 `Decimal`模塊執行精確的浮點數運算

Python v3.10.6 背景 浮點數的一個普遍問題是它們並不能精確的表示十進制數。 並且,即使是最簡單的數學運算也會產生小的誤差,比如: >>> 4.2+2.1 6.300000000000001 這些錯誤是由底層特徵決定的,因

原创 Jenkins Build History 呈現自定義內容

效果展示: 需要安裝插件:Build Name and Description Setter pipeline示例: pipeline { agent any stages { stage("Initia

原创 Pytest Fixture

關於pytest fixtures,根據官方文檔介紹: fixture 用於提供一個固定的基線,使 Cases 可以在此基礎上可靠地、重複地執行。對比 PyUnit 經典的setup/teardown形式,它在以下方面有了明顯的改進:

原创 使用Poetry管理Python項目

Poetry 命令 Poetry version 1.1.11 # 從requirements.txt導入依賴 cat requirements.txt | grep -E '^[^# ]' | cut -d= -f1 | xargs

原创 開箱即用:使用shell腳本一鍵啓停python服務

#!/usr/bin/env bash # chmod 755 monitor.sh # workdir=$(dirname $(readlink -f "$0")) # echo $workdir daemon_start() {

原创 docker-compose創建的網段與內網衝突時的解決方法

問題背景 Docker啓動時會在宿主機上創建一個docker0的虛擬網橋,默認網段爲172.17.0.1/16,恰好公司內網VPN使用的是172.18網段,這就導致在使用docker-compose部署的服務時,自動生成的網橋很容易與內網衝

原创 Python多線程併發編程 -- concurrent.futures

Python version 3.8.5 在Python中,併發並不是同一時刻有多個操作(thread/task)同時進行。相反,由於全局解釋器鎖(GIL) 的存在,在某個特定的時刻,它只允許有一個操作發生,只不過線程或任務之間會互

原创 從測試流程角度,對產品質量的一些總結思考

兩個熟悉的場景: 生產環境出現問題,解決問題,原因覆盤、責任分配到人; 無休止的測試-迴歸-再測試-再回歸測試,已經投入了很大精力,但仍對項目質量不信心; 如果自己所負責或參與的項目經常遇到上面的兩種情況,不妨從項目測試流程角度,去思考

原创 Python基於Redis實現分佈式鎖

> redis-server --version Redis server v=3.0.504 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=a4f7a6e86f2d60b3 Re

原创 Jenkins擴展釘釘消息通知

背景 Jenkins藉助釘釘插件,實現當構建失敗時,自動觸發釘釘預警。雖然插件允許自定義消息主體,支持使用 Jenkins環境變量,但是侷限性依舊很大。當接收到釘釘通知後,若想進一步查看報錯具體原因,仍完全依賴郵件通知,很影響效率。 如

原创 Flask 使用wtforms驗證前端請求數據

Python v3.8.5 , flask v1.1.2,wtforms v2.3.3 以一個註冊接口爲例,最終實現效果如下: 代碼實現 創建表單數據驗證基類,所有視圖的表單驗證都繼承此類: from flask import r

原创 Flask項目異常處理機制

Date: 2021/02/07 Flask version: 1.1.2 對於前後端分離的項目,希望只通過JSON與前端交互,包括異常信息也要包裝JSON格式發送給前端。要想在Flask項目中處理好異常,建立一套自己的異常處理機制

原创 使用Flask-WTF處理表單

在某些情況下,需要爲一個表單添加多個提交按鈕。比如在用戶登錄頁面的表單中,存在登錄按鈕和在註冊按鈕。當用戶提交表單時,需要在視圖函數中根據按下的按鈕來做出不同的處理:點擊登錄按鈕,驗證用戶輸入項的合法性;點擊註冊按鈕,頁面跳轉到註冊頁面

原创 Python 查看對象屬性的幾種方式: __dict__, dir(), vars(), locals()

Python v3.8.5 __dict__ object.__dict__ A dictionary or other mapping object used to store an object’s (writable) attr