日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pytest第二版 进阶学习

發布時間:2025/3/21 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pytest第二版 进阶学习 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

pytest 框架實現一些前后置(固件,夾具)的處理,常用三種。

一、setup/teardown,setup_class/teardown_class

為什么需要這些功能
比如: web自動化執行用例之前, 需要打開瀏覽器, 執行之后需要關閉瀏覽器

import pytest# 所有的用例之前都會執行一次 def setup():print('\n在執行測試用例之前初始化的代碼: 打開瀏覽器')# 在類中只會執行一次 def setup_class():print('\n在執行每個類之前的初始化工作')@pytest.mark.smoke def test_html_001():print('這是一個html的測試函數')def test_html_002():print('這是一個html_002的測試函數')# 所有的用例執行之后執行一次 def teardown():print('\n在執行測試用例之后的掃尾的代碼 關閉瀏覽器')# 最后的掃尾工作,只執行一次 def teardown_class():print('\n在每個類執行后的掃尾的工作: 比如銷毀日志,銷毀鏈接')

二、使用fixture裝飾器來實現部分用例的前后置

裝飾器
@pytest.fixture(scope=’’, name=’’, params=’’, autouse=’’, ids=’’)

  • scope表示的是被@pytest.fixture標記的方法的作用域,默認為function, 還有class, module, package/session
  • params: 參數化
  • autouse: 自動使用,默認為false
  • ids: 當使用params參數化的時候,給每一個值設置一個變量
  • name: 給表示的是被@pytest.fixture標記的方法取一個別名(當取了別名之后, 那么原來的名稱就不用了)
  • import pytest@pytest.fixture(scope='function', name='project', params=['成龍', '甄子丹', '李連杰'], autouse=True, ids=['cl', 'zzd', 'llj']) def my_fixture_01(request):print('這是前后置的方法,可以實現部分以及全部用例的前后置')yield request.paramprint('只是后置的方法')class TestFixture:def test_fixture(self):print('這是一個test_fixture的測試函數')def test_fixture_001(project):print('這是一個test_fixture_001的測試函數 '+ str(my_fixture_01))

    執行結果

    src/html_web/test_fixture.py::TestFixture::test_fixture[cl] 這是前后置的方法,可以實現部分以及全部用例的前后置 這是一個test_fixture的測試函數 PASSED只是后置的方法src/html_web/test_fixture.py::TestFixture::test_fixture[zzd] 這是前后置的方法,可以實現部分以及全部用例的前后置 這是一個test_fixture的測試函數 PASSED只是后置的方法src/html_web/test_fixture.py::TestFixture::test_fixture[llj] 這是前后置的方法,可以實現部分以及全部用例的前后置 這是一個test_fixture的測試函數 PASSED只是后置的方法src/html_web/test_fixture.py::test_fixture_001[cl] 這是前后置的方法,可以實現部分以及全部用例的前后置 這是一個test_fixture_001的測試函數 <function my_fixture_01 at 0x7fb1d92e9170> PASSED只是后置的方法src/html_web/test_fixture.py::test_fixture_001[zzd] 這是前后置的方法,可以實現部分以及全部用例的前后置 這是一個test_fixture_001的測試函數 <function my_fixture_01 at 0x7fb1d92e9170> PASSED只是后置的方法src/html_web/test_fixture.py::test_fixture_001[llj] 這是前后置的方法,可以實現部分以及全部用例的前后置 這是一個test_fixture_001的測試函數 <function my_fixture_01 at 0x7fb1d92e9170> PASSED只是后置的方法=============================================================== 6 passed, 9 deselected in 0.04s ===============================================================

    三、通過conftest.py和@pytest.fixture()結合使用實現全局的前置應用(比如:項目的全局登陸,模塊的全局處理)

  • conftest.py文件是單獨存放的一個家具配置文件,名稱是不能改的
  • 用處可以在不同的py文件中使用fixture函數
  • conftest.py為全局配置,原則上需要和運行的用例放在同一層,并且不做任何import倒入的操作
  • 總結: setup/teardown setup_class/teardown_clss它是作用于所有的用例或者類
    @pytest.fixture() 它的作用是既可以部分也可以全部前后置
    conftest.py 和 @pytest.fixtrue()結合使用,作用于全局的前后置

    四、pytest結合allure-pytest插件生成allure測試報告

  • 下載,解壓,配置path路徑

    https:github.com/allure-framework/allure2/releases
    path路徑配置
    驗證: allure -version
    問題: dos可以驗證但是pycharm驗證失敗,需重啟pycharm

  • 生成allure報告: os.system(‘allure generate ./temp -o ./report --clean’)
  • allure generate 命令,固定寫法
  • ./temp 臨時的json格式報告的路徑
  • -o 輸出output
  • ./report 生成的allure報告的路徑
  • –clean 清空./report 路徑原來的報告
  • 總結

    以上是生活随笔為你收集整理的pytest第二版 进阶学习的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。