請教一個 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)
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 作用域問題
- 7.pytest 強大的 fixture (中)
- 這次,我掌握了 pytest 中 fixture 的使用及 pytest 執行測試的載入順序
- pytest 精通 fixture
- pytest fixture 使用
- 關於 pytest 外掛 pytest-rerunfailures 和 fixture 的相容性問題AI
- 『德不孤』Pytest框架 — 11、Pytest中Fixture裝飾器(一)框架
- Pytest系列(20)- allure結合pytest,allure.step()、allure.attach的詳細使用
- 想請教一下各位一個介面寫法問題
- allure 報告整合方案請教
- allure報告自定義logo圖片和文字Go
- jenkins 中的 allure 和 email 問題梳理JenkinsAI
- pytest(6)-Fixture(韌體)
- 手寫一個自定義PromisePromise
- Pytest系列(21)- allure的特性,@allure.description()、@allure.title()的詳細使用
- 『德不孤』Pytest框架 — 12、Pytest中Fixture裝飾器(二)框架
- 『德不孤』Pytest框架 — 13、Pytest中Fixture裝飾器(三)框架
- Pytest系列(23)- allure打標記,@allure.feature()、@allure.story()、@allure.severity()的詳細使用
- Pytest學習(20)- allure之@allure.step()、allure.attach的詳細使用
- iOS自定義log並寫入檔案iOS
- skywalking-agent 自定義外掛的幾個問題想請教一下
- pytes中fixture的scope: 決定可以在什麼範圍內共享fixture
- Pytest學習(四) - fixture的使用
- Pytest測試框架(三):pytest fixture 用法框架
- Allure快速入門
- 如何寫好一個自定義ViewView
- springmvc寫了方法無法訪問SpringMVC
- Pytest-Allure報告的Logo的完美定製Go
- 先讓不懂程式碼的來測?通義這個新產品,程式碼剛寫完,預覽就出來了
- Pytest 指令碼打包成 exe 後,無法呼叫 testcase,無法獲取到 fixture,希望大佬幫忙給以指點,多謝!指令碼
- 8.pytest 強大的 fixture (下)
- 6.pytest 強大的 fixture (上)
- 請教,blade模板中怎麼呼叫自定義的函式?函式
- python @pytest.fixture示例及用法Python
- pytest進階之fixture函式函式
- Jenkins+pytest+allure 自動化持續交付,幾個問題尋找解決辦法Jenkins
- 只需關注介面本身的框架 Pytest+Excel+Allure框架Excel