pytest文檔1-環境準備與入門

前言

首先說下爲何要學pytest,在此以前相信你們已經掌握了python裏面的unittest單元測試框架,那再學一個框架確定是須要學習時間成本的。 剛開始個人心裏是拒絕的,我想我用unittest也能完成自動化測試,幹嗎要去學pytest呢?最近看到愈來愈多的招聘要求會pytest框架了,也有小夥伴出去面試說會unittest框架被鄙視的。 因此學此框架應該至少有如下2個理由,第一條已經足夠:html

  • 學會了能夠裝逼
  • 能夠避免被面試官鄙視

python鄙視鏈:pytest 鄙視 > unittest 鄙視 > robotframework 鄙視 > 記流水帳 鄙視 > "hello world"小白python

pytest簡介

pytest是python的一種單元測試框架,與python自帶的unittest測試框架相似,可是比unittest框架使用起來更簡潔,效率更高。根據pytest的官方網站介紹,它具備以下特色:面試

  • 很是容易上手,入門簡單,文檔豐富,文檔中有不少實例能夠參考
  • 可以支持簡單的單元測試和複雜的功能測試
  • 支持參數化
  • 執行測試過程當中能夠將某些測試跳過(skip),或者對某些預期失敗的case標記成失敗
  • 支持重複執行(rerun)失敗的case
  • 支持運行由nose, unittest編寫的測試case
  • 可生成html報告
  • 方便的和持續集成工具jenkins集成
  • 可支持執行部分用例
  • 具備不少第三方插件,而且能夠自定義擴展

安裝pytest

1.安裝方法session

pip install -U pytest框架

2.pip show pytest查看安裝版本函數

pip show pytest工具

3.也能夠pytest --version查看安裝的版本單元測試

pytest --version學習

This is pytest version 3.6.3, imported from d:\soft\python3.6\lib\site-packages\
pytest.py

快速開始

1.新建一個test_sample.py文件,寫如下代碼測試

# content of test_sample.py
def func(x):
    return x +1

def test_answer():
    assert func(3)==5

2.打開test_sample.py所在的文件夾,cmd窗口輸入:pytest(或者輸入py.test也能夠)

D:\YOYO>pytest
============================= test session starts =============================
platform win32 -- Python 3.6.0, pytest-3.6.3, py-1.5.4, pluggy-0.6.0
rootdir: D:\YOYO, inifile:
collected 1 item

test_sample.py F                                                         [100%]

================================== FAILURES ===================================
_________________________________ test_answer _________________________________

    def test_answer():
>       assert func(3)==5
E       assert 4 == 5
E        +  where 4 = func(3)

test_sample.py:6: AssertionError
========================== 1 failed in 0.19 seconds ===========================

3.pytest運行規則:查找當前目錄及其子目錄下以test_*.py或*_test.py文件,找到文件後,在文件中找到以test開頭函數並執行。

寫個測試類

1.前面是寫的一個test開頭的測試函數,當用例用多個的時候,寫函數就不太合適了。這時能夠把多個測試用例,寫到一個測試類裏。

# test_class.py

class TestClass:
    def test_one(self):
        x = "this"
        assert 'h' in x

    def test_two(self):
        x = "hello"
        assert hasattr(x, 'check')

2.pytest會找到符合規則(test_.py和_test.py)全部測試,所以它發現兩個test_前綴功能。 若是隻想運行其中一個,能夠指定傳遞文件名test_class.py來運行模塊: 備註: -q, --quiet decrease verbosity( 顯示簡單結果)

py.test -q test_class.py

D:\YOYO>py.test -q test_class.py
.F                                                                       [100%]
================================== FAILURES ===================================
_____________________________ TestClass.test_two ______________________________

self = <test_class.TestClass object at 0x00000000039F1828>

    def test_two(self):
        x = "hello"
>       assert hasattr(x, 'check')
E       AssertionError: assert False
E        +  where False = hasattr('hello', 'check')

test_class.py:11: AssertionError
1 failed, 1 passed in 0.04 seconds

第一次測試經過,第二次測試失敗。 您能夠在斷言中輕鬆查看失敗的緣由。

pytest用例規則

  • 測試文件以test_開頭(以_test結尾也能夠)
  • 測試類以Test開頭,而且不能帶有 __init__ 方法
  • 測試函數以test_開頭
  • 斷言使用assert

---------------------------------pytest結合selenium自動化完整版-------------------------

全書購買地址 https://yuedu.baidu.com/ebook/902224ab27fff705cc1755270722192e4536582b

做者:上海-悠悠 QQ交流羣:874033608

也能夠關注下個人我的公衆號:yoyoketang

相關文章
相關標籤/搜索