pytest中文檔

  逼逼兩句:目前測試自動化領(lǐng)域比較火就是這個pytest的自動化測試框架了,兄弟們抓緊學(xué)習(xí)呀。

我對個pytest了解、知道它的存在就是不會用,上不了手從而導(dǎo)致無法落實(shí)項(xiàng)目上。
跟我有一樣處境的兄弟們,來一起組隊(duì)打怪吧!歡迎組隊(duì),資源相互分享哦!!!

第一章:
一、pytest:

     1.1安裝pytest
         1.在python環(huán)境下運(yùn)行下命令即可:
         pip install -u pytest
     
         2.檢查安裝的朋友test的版本信息:
         pyest --version
         
     1.2創(chuàng)建第一個測試
         test_sample.py
         def func(x):
             return x + 1
         def test_answer():
             assert func(3) == 5
             
     1.2.1內(nèi)容補(bǔ)充:
         pytest規(guī)則
         結(jié)果類型:(以下是測試功能的幾種常見的結(jié)果)
         
         ?  PASSED(.):測試成功
         ?  FAILED(F): 測試失?。〝嘌允。?         ?  ERROR (E):錯誤
         ?  XFAIL:預(yù)期失敗,加了 @pytest.mark.xfail()
     1.3運(yùn)行多個測試
         pytest會運(yùn)行當(dāng)前目錄及子目錄下所有以test_*.py和*_test.py命名的文件。
         文件匹配方式遵循Standard test discovery rules(標(biāo)準(zhǔn)測試發(fā)現(xiàn)規(guī)則)
         
    
    1.4 判斷是否發(fā)生了指定的異常-------沒有懂哦,后續(xù)研究
          使用raises可以判斷代碼是否拋出了異常:
         # test_sysexit.py 的內(nèi)容
        import pytest
         def f():
         raise SystemExit(1)
             def test_mytest():
         with pytest.raises(SystemExit):
              f()
        使用"quiet"模式來執(zhí)行這個測試:
         $ pytest ‐q test_sysexit.py
         

     1.5將多個測試用例放在一個class中包含多個測試用例的class:
         class TestClass(object):
            def test_one(self):
                 x = "this"
                 assert 'h' in x
            def test_two(self):
                 x = "hello"
                 assert hasattr(x, 'check')
         

     
     1.5.1補(bǔ)充
         前言:測試用例的預(yù)期結(jié)果是用例不可缺少的一部分,那么斷言就是自動化測試不可缺少的一步,一個沒有斷言的用例,自動化測試的就沒有意義了。
         那什么是斷言呢?簡單來講就是實(shí)際結(jié)果和期望結(jié)果去對比,符合預(yù)期那就測試 pass,不符合預(yù)期那就測試 failed
         Pytest里面使用關(guān)鍵字assert,斷言為一個表達(dá)式,只要表達(dá)式的最終結(jié)果為True,那么斷言通過,用例執(zhí)行成功,否則用例執(zhí)行失敗

         Assert 常用斷言方式:pytest里面斷言實(shí)際上就是python里面的assert斷言方法,常用的有以下幾種
         
         ?  assert xx 判斷xx為真
         ?  assert not xx 判斷xx不為真
         ?  assert a in b 判斷b包含a
         ?  assert a == b 判斷a等于b
         ?  assert a != b 判斷a不等于b



     1.6為測試創(chuàng)建唯一的臨時(shí)文件夾
         pytest 提供 Builtin fixtures/function arguments來創(chuàng)建任意的資源,比如一個具有唯一的臨時(shí)文件夾:
         
         # test_tmpdir.py的內(nèi)容
            def test_needsfiles(tmpdir):
                 print(tmpdir)
                 assert 0
                 
         如果函數(shù)的簽名中(函數(shù)簽名包括函數(shù)的參數(shù)和返回值,以及參數(shù)的封送順序等等)包含參數(shù)tmpdir,
         pytest就會在執(zhí)行測試用例之前查找并調(diào)用特定的fixture創(chuàng)建所需資源。
         在本例中,pytest會創(chuàng)建一個unique-per-test-invocation臨時(shí)文件夾


        關(guān)于tmpdir的更多信息請參考Temporary directories and files 通過下面的命令可以查看所有內(nèi)置的pytest fixture
         
     1.6.1補(bǔ)充
         pytest fixture
         
          1.fixture概念
              fixture是 pytest 用于將測試前后進(jìn)行預(yù)備、清理工作的代碼處理機(jī)制。
             
          2.fixture優(yōu)勢
            fixture相對于unittest中的setup和teardown來說有以下幾點(diǎn)優(yōu)勢:
             ? fixure命名更加靈活,局限性比較小;
             ? conftest.py 配置里面可以實(shí)現(xiàn)數(shù)據(jù)共享,不需要import就能自動找到一些配置;
             ? scope="session"可以實(shí)現(xiàn)多個.py跨文件使用一個session來完成多個用例。
             
         pytest之fixture的認(rèn)識參考: https://blog.csdn.net/weixin_46745811/article/details/122384070
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于自我介紹我就不說太多了,因?yàn)槠鋵?shí)怎么講,我是誰其實(shí)不重要,重要的是我能給大家?guī)硎裁磧r(jià)值,這個點(diǎn)很重要。對吧?...
    王大生閱讀 554評論 0 4
  • 安裝與入門 Python支持版本: Python 2.6,2.7,3.3,3.4,3.5, Jython, PyP...
    千夜閱讀 5,329評論 0 3
  • 一、入門使用 一、環(huán)境安裝 pytest是python中的第三方庫,使用之前需要先安裝,在命令行中運(yùn)行以下安裝命令...
    測試人Musen閱讀 692評論 0 0
  • 第一章 出生 在浩瀚的宇宙中的室女座超星系團(tuán),本星系群排名第二的銀河系中有一個特殊的星系叫做太陽系,在這個星系里面...
    李昱閱讀 520評論 0 2
  • 綠茵圣騎士 正文卷 第一章 魔獸世界 一月份的英國倫敦,天氣格外的寒冷,漫天的雪花在寒風(fēng)中肆意地飛舞著,在幽深的街...
    Snow_DZG閱讀 2,444評論 1 6

友情鏈接更多精彩內(nèi)容