pytest如何輸出日志信息


        我們在學習或調試過程中,測試用例的調試信息都非常有用,可以讓我們知道現在的運行情況,執行到哪步以及相應的出錯信息等,可以在pytest里面,有時並不會輸出所有信息,比如默認情況下pass的測試用例是沒有print輸出的,本文主要就是解決這個問題。

 

一、用print輸出log信息

  我們在編寫簡單的Python程序時,往往可以通過print()打印輸出信息,從而檢測是否達到預期需求。但是在pytest中,往往成功的測試用例直接顯示為pass,只有錯誤的測試用例才會有相應的錯誤信息,但是有時用例雖然執行成功,但結果是否是我們需要的。如:自動化接口測試時,測試用例執行成功了,但是接口的返回數據是否正確?

  這時可以用‘-s’參數或者 ‘--capture=no’,這樣就可以輸出所有測試用的print信息。但是pytest還是會等着所有的測試用例都執行完畢才會顯示運行結果。

import requests
from  test_aqjr.sm4decode import sm4encrype, getmd5, sm4decrypt
from test_aqjr.readconfig import base_data
from test_aqjr.logger import logger

def test_time_sync():
    # 接口未加密部分的URL
    base_time_sync_url = base_data.time_sync_url
    # 請求參數
    data = {
        "PartnerId": base_data.partnerid,
        "TimeStamp": base_data.timestamp,
        "SerialNum": base_data.serialnum,
        "Version": base_data.version,
        "Token": base_data.token,
        "ReqContent": {
        }
    }
    # 請求數據通過秘鑰加密加密
    r = sm4encrype(base_data.old_key, str(data))
    print("請求參數加密的結果:%s" % r)
    # hash值
    hash = getmd5(r)
    # 發送的url
    url = base_time_sync_url + hash
    print("通過hash加密后的URL:%s" % url)
    # 基於HTTP協議的POST請求
    response = requests.post(url, r)
    # 響應結果通過秘鑰解密
    e = sm4decrypt(base_data.old_key, response.content)
    print("返回的響應結果:%s" % e)

pytest -s -v test_time_sync.py 或 pytest --capture=no -v test_time_sync.py

 

 二、在pytest中用logging代替print

  像一些復雜的程序或框架,特別是一些大型的程序,我們想要通過調試信息了解程序的運行情況,python提供了一個日志模塊logging,它可以把我們想要的信息全部保存到一個日志文件中,方便查看。
  
import requests
from  test_aqjr.sm4decode import sm4encrype, getmd5, sm4decrypt
from test_aqjr.readconfig import base_data
from test_aqjr.logger import Logger


def test_time_sync():
    # 接口未加密部分的URL
    base_time_sync_url = base_data.time_sync_url
    # 請求參數
    data = {
        "PartnerId": base_data.partnerid,
        "TimeStamp": base_data.timestamp,
        "SerialNum": base_data.serialnum,
        "Version": base_data.version,
        "Token": base_data.token,
        "ReqContent": {
        }
    }
    logger = Logger(logger="test_time_sync").getlog()
    # 請求數據通過秘鑰加密加密
    r = sm4encrype(base_data.old_key, str(data))
    logger.info("請求參數加密的結果:%s" % r)
    # hash值
    hash = getmd5(r)
    # 發送的url
    url = base_time_sync_url + hash
    logger.info("通過hash加密后的URL:%s" % url)
    # 基於HTTP協議的POST請求
    response = requests.post(url, r)
    # 響應結果通過秘鑰解密
    e = sm4decrypt(base_data.old_key, response.content)
    logger.info("返回的響應結果:%s" % e)

  

 

 

 

 





免責聲明!

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



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