pytest執行測試前置和後置環境資訊處理

2021-10-09 23:07:54 字數 3037 閱讀 2054

├─config  					---

-配置檔案目錄

├─report ---

-測試報告目錄

│ ├─allure ---

-allure測試報告

│ │ ├─allure_report

│ │ ├─assets

│ │ └─tmp

│ └─htmlcov ---

-覆蓋率測試報告

├─run_inte***ce_test ---

-介面測試執行入口

├─service ---

-封裝業務操作

│ ├─api

│ │ ├─business

│ │ ├─common

│ │ ├─department

│ │ │ ├─accounts

├─test_case ---

-測試用例目錄

│ ├─manager

│ │ ├─organization

│ │ │ ├─accounts

│ │ │ │ ├─constractstype

│ │ │ │ │ ├─contarcts

├─test_data ---

-測試資料目錄

└─utils ---

-常用庫封裝

├─apiutils

├─commonutils

├─weblib

1、測試人口:執行測試

# run_inte***ce.py

# 執行整個測試檔案目錄

pytest.main(

["-s"

,"../test_case"

,"--reruns=2"

,"--reruns-delay=1"

,"--html=../report/allure/user.html"

,"--junitxml=../report/allure/user.xml"

,"--alluredir"

,"../report/allure/tmp/"

,"-vv"

,"--cov=..\\test_case"

,"--cov-report=html"])

# 測試**覆蓋率

os.system(

"allure generate ../report/allure/tmp -o ../report/allure/allure_report --clean"

) os.system(f"move htmlcov \\report"

)

@pytest.fixture(scope=

"session"

, autouse=

true

)def

init_env_info()

:# 置前操作

with allure.step(

"刪除allure報告"):

print

("刪除allure報告"

) os.system(r"rd /s /q ..\report\allure\tmp"

) os.system(r"rd /s /q ..\report\allure\allure_report"

)with allure.step(

"刪除測試覆蓋率測試報告"):

print

("刪除測試覆蓋率測試報告"

) os.system(r"rd /s /q ..\report\htmlcov"

)with allure.step(

"建立allure測試報告tmp檔案目錄"):

os.system(r"mkdir ..\report\allure\tmp"

) os.system(r"mkdir ..\report\allure\allure_report"

)yield

# 置後操作

with allure.step(

"環境配置檔案資訊"):

lib_versions =

f =open

(f"/report/allure/tmp/environment.properties"

,"a+"

)with allure.step(

"獲取相關庫的版本資訊"):

lib_versions_list =

["pytest"

,"selenium"

,"xlrd"

,"requests"

]for lib_version_one in lib_versions_list:

result = os.popen(f"pip3 list|findstr "

).read(

)for line in result.split(

"\n"):

if line:

lib_info = line.split(

" ")

lib_str = lib_info[0]

lib_version = lib_info[-1

] f.write(f"=\n"

)for k, v in lib_versions.items():

try:

stdout, stderr = subprocess.popen(v, stdout=subprocess.pipe)

.communicate(

) result = stdout.decode(

"gbk"

) f.write(f"="

)except environmenterror:

f.write(f"="

) f.close(

)

pytest的前置後置

setup module teardown module 函式形式,前置動作 用例1 用例2 用例3 後置動作 setup function teardown function 函式形式,每個用例執行前後,都會執行前置後置,即前置動作 用例1 後置動作 前置動作 用例2 後置動作 setup cla...

pytest 前置後置 共享機制

ddt 資料驅動測試 思想 應用場景 場景流程是一樣的,只有資料不一樣。引數化 python測試框架當中應用資料驅動 unittest ddt庫 pytest 自帶的。在測試用例的前面加上 pytest.mark.parametrize 引數名 列表資料 引數名 用來接收每一項資料,並作為測試用例的...

pytest 之 fixture 的前置後置功能

一 fixture 之 conftest.py 檔案 二 建立 conftest.py 檔案,定義前置 後置 fixture 函式根據關鍵字 yield 作為前置和後置的分割線,並且 yield 也可以接收返回值,返回元祖,作用相當於return yield 譯 優特 分割線,返回前置結果 impo...