pytest系列(一):什麼是單元測試界的高富帥?

pytest是python語言中一款強大的單元測試框架,用來管理和組織測試用例,可應用在單元測試、自動化測試工做中。html

unittest也是python語言中一款單元測試框架,可是功能有限,沒有pytest靈活。python

就像:蘋果電腦mac air 和mac pro同樣。都是具有一樣的功能,可是好用,和更好用。session

本文包含如下幾個內容點:框架

    1)pytest的簡單示例dom

    2)pytest的安裝函數

    3)pytest的特徵、與unittest的區別。單元測試

    4)  pytest如何自動識別用例。測試

    5)pytest框架中,用例的運行順序。ui

 

 

1)pytest寫用例很簡單,下面是一個簡單的例子:spa

1 import random
2 
3 
4 def test_demo():
5     assert 7 == random.randint(0,10)

運行結果以下:

============================= test session starts =============================
platform win32 -- Python 3.7.2, pytest-4.6.3, py-1.8.0, pluggy-0.12.0
rootdir: D:\Pychram-Workspace\STUDY_PYTEST
plugins: allure-pytest-2.6.5, html-1.21.1, metadata-1.8.0, rerunfailures-7.0collected 1 item

simple.py F
simple.py:10 (test_demo)
7 != 6

Expected :6
Actual   :7

========================== 1 failed in 0.14 seconds ===========================

 

2)pytest的安裝

     安裝命令:pip install pytest

 

 

3)pytest的特徵、與unittest的區別。

    pytest的特徵以下:

    3.1  自動識別測試用例。(unittest當中,須要引入TestSuite,主動加載測試用例。)

    3.2  簡單的斷言表達:assert 表達式便可。(unittest當中,self.assert*)

    3.3  有測試會話、測試模塊、測試類、測試函數級別的fixture。(unittest當中是測試類、測試函數級別的fixture)

    3.4 有很是豐富的插件,目前在600+,好比allure插件。(unittest無)

    3.5 測試用例不須要封裝在測試類當中。(unittest中須要自定義類並繼承TestCase)

 

 

那麼pytest是如何自動識別測試用例的呢?咱們在編寫pytest用例的時候,須要遵照哪些規則呢?

  4)  pytest如何自動識別用例

   識別規則以下:

    一、搜索根目錄:默認從當前目錄中搜集測試用例,即在哪一個目錄下運行pytest命令,則從哪一個目錄當中搜索;

    二、搜索規則:

        1)搜索文件:符合命名規則 test_*.py 或者 *_test.py 的文件

        2)在知足1)的文件中識別用例的規則:

              2.1)以test_開頭的函數名;

              2.2)以Test開頭的測試類(沒有__init__函數)當中,以test_開頭的函數

 

  示例:在D:\pycharm_workspace目錄下,建立一個python工程,名爲study_pytest。在工程下,建立一個python包,包名爲TestCases。

            在包當中,建立一個測試用例文件:test_sample_1.py。文件內容以下:

 1 #!/usr/bin/python3
 2 # -*- coding: utf-8 -*-
 3 # Name: test_sample_1.py
 4 # Author: 簡
 5 # Time: 2019/6/27
 6 
 7 # 定義py文件下的測試用例
 8 def test_sample():
 9     print("我是測試用例!")
10 
11 class TestSample:
12 
13     def test_ss(self):
14         print("我也是測試用例!")
15 
16     def hello_pytest(self):
17         print("hi,pytest,我不是用例哦!!")

 

按照上面定義的搜索規則,須要跳轉到工程目錄,而後再執行命令:pytest -v 。 執行結果以下:

 

 

讓咱們愉快的加進來第2個測試文件:test_sample_2.py,內容以下:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# Name: test_sample_2
# Author: 簡
# Time: 2019/6/27

def add(a,*args):
    sum = a
    for item in args:
        sum += item
    return sum


def test_add_two_number():
    assert 33 == add(11,22)
    assert 55.55 == add(22.22,33.33)


def test_add_three_number():
    assert 101 == add(10,90,1)

 

 再次運行命令:pytest -v   獲得以下結果:

 

經過多個用例文件的執行,能夠看出用例的執行順序。

   5)  pytest中用例的執行順序

   原則:先搜索到的py文件中的用例,先執行。在同一py文件當中,按照代碼順序,先搜索到的用例先執行。

相關文章
相關標籤/搜索