請教一個 pytest 中 fixture 相關問題:將 fixture 中寫入 allure 附件的程式碼提出來定義成自定義方法後,就無法按預期寫入 allure 附件了
我定義了一個 fixture,他本身斷言失敗後,會在 allure 報告中新增附件,記錄這個 fixture 的響應資訊。但是為了程式碼複用,我將斷言相關程式碼提了出來,但是提出來之後發現,如果 fixture 內部斷言失敗,並不會在 allure 報告中新增附件,請問是為什麼?我該怎麼解決?
這是原始碼,可以正常新增附件,allure 報告效果如下:
:
@pytest.fixture(scope="session", autouse=True)
def tf_get_trainerId_xiehe(tf_getSession):
url = Environment.HOST_ADMIN + 'managerList'
data = {'page': 1,
'limit': 30,
'keys': Environment.userphone_tea,
'characterType': 1,
'roles': ''}
resp = tf_getSession.post(url=url, data=data)
"""
初始想法:我定義了許多fixture,有大部分fixture都需要下面的斷言並寫allure附件的程式碼,
所以為了複用,我期望是將下面的程式碼提出來,但提出來之後發現就無法成功寫入allure附件了。
"""
allure.step("Check response status code and content")
try:
assert resp.status_code == 200, f"Expected status code 200 but got {resp.status_code}"
assert resp.json()['code'] == 2000, f"Expected code {2000} but got {resp.json()['code']}"
AssociatedDataTanQiang.id_xiehe_admin = resp.json()['data']['list'][0]['id']
except (AssertionError,IndexError) as e:
allure.attach(
json.dumps(resp.json(), ensure_ascii=False, indent=2),
name="response.json",
attachment_type=allure.attachment_type.JSON
)
allure.attach(
resp.text,
name="response.text",
attachment_type=allure.attachment_type.TEXT
)
raise AssertionError(f"Fixture: {tf_get_trainerId_xiehe.__name__}斷言失敗") from e
yield
這是修改後的程式碼,無法正常在 allure 報告中新增附件:
def check_response(resp, target_position, expected_code=2000):
allure.step("Check response status code and content")
try:
assert resp.status_code == 200, f"Expected status code 200 but got {resp.status_code}"
assert resp.json()['code'] == expected_code, f"Expected code {expected_code} but got {resp.json()['code']}"
return target_position
except (AssertionError,IndexError) as e:
allure.attach(
json.dumps(resp.json(), ensure_ascii=False, indent=2),
name="response.json",
attachment_type=allure.attachment_type.JSON
)
allure.attach(
resp.text,
name="response.text",
attachment_type=allure.attachment_type.TEXT
)
raise AssertionError(f"Fixture: 斷言失敗") from e
@pytest.fixture(scope="session", autouse=True)
def tf_get_trainerId_xiehe(tf_getSession):
url = Environment.HOST_ADMIN + 'managerList'
data = {'page': 1,
'limit': 30,
'keys': Environment.userphone_tea,
'characterType': 1,
'roles': ''}
resp = tf_getSession.post(url=url, data=data)
AssociatedDataTanQiang.id_xiehe_admin = check_response(resp,resp.json()['data']['list'][0]['id'])
yield
相關文章
- pytest(12)-Allure常用特性allure.attach、allure.step、fixture、environment、categoriesGo
- pytest 精通 fixture
- pytest fixture 使用
- 這次,我掌握了 pytest 中 fixture 的使用及 pytest 執行測試的載入順序
- 『德不孤』Pytest框架 — 11、Pytest中Fixture裝飾器(一)框架
- 關於 pytest 外掛 pytest-rerunfailures 和 fixture 的相容性問題AI
- 請教:關於log4j資訊入庫增加自定義欄位的問題
- Pytest系列(21)- allure的特性,@allure.description()、@allure.title()的詳細使用
- 在 Microsoft Outlook 中無法開啟附件ROS
- Pytest學習(20)- allure之@allure.step()、allure.attach的詳細使用
- 想請教一下各位一個介面寫法問題
- jenkins 中的 allure 和 email 問題梳理JenkinsAI
- Allure快速入門
- 『德不孤』Pytest框架 — 12、Pytest中Fixture裝飾器(二)框架
- 『德不孤』Pytest框架 — 13、Pytest中Fixture裝飾器(三)框架
- Pytest系列(23)- allure打標記,@allure.feature()、@allure.story()、@allure.severity()的詳細使用
- allure報告自定義logo圖片和文字Go
- Pytest學習(四) - fixture的使用
- 手寫一個自定義PromisePromise
- 請教bang老師關於自定義classloader的一些問題
- 將某資料庫的ACL資訊寫入檔案將其作為附件寄出資料庫
- 請教Jive程式碼中的問題
- 自定義view之寫一個帶刪除按鈕的EdittextView
- 請教一個關於JAVA SOCKET程式設計中的問題Java程式設計
- React中的HTML轉義寫法ReactHTML
- Pytest測試框架(三):pytest fixture 用法框架
- iOS自定義log並寫入檔案iOS
- 寫了MVC+HIBERNATE,遇到一個問題,請高手賜教MVC
- 如何寫好一個自定義ViewView
- pytest進階之fixture函式函式
- Pytest高階進階之Fixture
- Pytest 指令碼打包成 exe 後,無法呼叫 testcase,無法獲取到 fixture,希望大佬幫忙給以指點,多謝!指令碼
- Docker 自定義網橋後,無法正常啟動問題Docker
- 求助!cjivebbs安裝後附件問題!
- 先讓不懂程式碼的來測?通義這個新產品,程式碼剛寫完,預覽就出來了
- 請教關於jb中開發ejb的一個問題
- 解決 allure.dynamic.parameter 不生效問題 或者 allure 報告中因為引數導致排版的問題
- Pytest-Allure報告的Logo的完美定製Go