1. 程式人生 > 實用技巧 >pytest使用簡單概括[pytest.ini、allure、looging]

pytest使用簡單概括[pytest.ini、allure、looging]

1.pytest.ini

cmd執行:

pytest --help  #檢視pytest.ini  

pytest詳細使用:https://cloud.tencent.com/developer/article/1640840

"""
pytest測試:
測試檔案以test_開頭(以_test結尾也可以)
測試類以Test開頭,並且不能帶有 init 方法
測試函式以test_開頭
斷言使用基本的assert即可
"""

2.allure

環境依賴:java8+、jdk1.8

brew install allure
pip install pytest
pip install allure-pytest

3.logging

logging模組的詳細使用:https://www.cnblogs.com/nancyzhu/p/8551506.html

https://blog.csdn.net/Runner1st/article/details/96481954

1)修改pytest.ini檔案

pytest是從pytest.ini中讀取log_cli配置的,預設是關閉的

[pytest]
log_cli = 1
log_cli_level = INFO
log_cli_format = %(asctime)s [%(levelname)8s] %(message)s (%(filename)s:%(lineno)s)
log_cli_date_format=%Y-%m-%d %H:%M:%S

2)用pytest -o方式重寫,這個功能在pytest 3.4之後才實現,如下

pytest testcases.py -o log_cli=true -o log_cli_level=INFO  

 logging模組使用:

logging.basicConfig(level=logging.INFO, filemode='a', filename='logger.log',
format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s')
def test_a():
    log.info('info message')
    log.debug('debug message')
    log.warning('warning message')
    log.error('error message')
    log.critical('critical message')
    assert 1, "pass"
allure+logging例項:
currentPath = os.path.dirname(os.path.abspath(__file__))
date = time.strftime("%Y-%m-%d_%H_%M_%S", time.localtime())
"""
filemode='a',##模式,有w和a,w就是寫模式,每次都會重新寫日誌,覆蓋之前的日誌
#a是追加模式,預設如果不寫的話,就是追加模式
"""
if __name__ == '__main__': # 使用pytest生成報告:pytest --html=report.html # 使用allure生成報告 report_path = os.path.join(currentPath, 'results', 'reports', str(date)) allure_report_path = os.path.join(currentPath, 'results', 'allurereport', str(date)) test_folder = os.path.join(currentPath, 'testcases') pytest.main([test_folder, '--alluredir=%s' % (report_path), '-o log_cli=true']) #-o log_cli_level=INFO os.system('/usr/local/Cellar/allure/2.13.5/bin/allure generate %s -o %s/html --clean' % (report_path, allure_report_path)) # 替換為本地的 allure 安裝路徑