pythonユニットテストフレームpytestの使用例


まずみんなの国慶節の楽しみを祈って、この休暇期間は妻が試験しますので、私も毎日図書館に行って何日間勉強しました。
このブログではpytestテストのフレームワークを説明します。このフレームワークは現在最も流行しているpython言語の一番人気のあるシングルフレームです。マスターしないといけないです。まず、このフレームは第三者モジュールです。pipでインストールすればいいです。

pip install pytest
これから本題に入ります。
一、pytestの運行ルールを紹介します。
1、テストファイルの名前はtest(*)でなくてはいけません。pyのフォーマット、または**_test.pyのフォーマット
2、試験類の名称はTestで始まる必要があります。また、この類はまだ構造方法がありません。init_
3、テスト関数の名前はtestで始まる必要があります。
pytestのデフォルトは上の3つの規則によって実行されます。もちろん私達はカスタムで運行することができます。これは重要ではないです。一番簡単な例を見てください。

import os
import pytest
 
# pytest python       
 
def func(x):
 return x + 1
 
 
def test_a():
 print("____test_a____")
 assert func(2) == 5
 
def test_b():
 print("____test_b____")
 assert func(2) == 3
 
if __name__ == '__main__':
 pytest.main(["-s","pytest1.py"])
二、pytestの前置条件と後置条件を紹介します。unittestのtestfixture(ファームウェアをテストします。)
学生たちが以前ユニティテストのフレームワークを使ったことがあるなら、ファームウェアという名詞をテストすることに慣れなくなります。よく分からないなら、前に書いたユニティテストのフレームワークのブログを見てもいいです。(https://www.jb51.net/article/197004.htm
pytestフレームのテストファームウェアは2つあります。一つはクラスレベルで、次のように実行されます。
a、実行クラスの前置条件
b、実行関数の事前条件
c、実行関数の後付け条件
d、実行類の後置条件
使用も簡単です。当時の関数の名前は必ず以下の備考と一致しています。

# pytest        
 
# 1、     setup teardown
#              
#         ,     setup teardown
 
# 2、   setup_class teardown_class
#             
#           setup_class teardown_class
1、関数式のケース--関数レベルの前置条件と後置条件

import os
import pytest
 
def func(x):
 return x + 1
 
 
def test_a():
 print("____test_a____")
 assert func(2) == 5
 
def test_b():
 print("____test_b____")
 assert func(2) == 3
 
 
def setup():
 print("       ")
 
def teardown():
 print("       ")
実行結果は以下の通りです

2、クラスのケース--関数レベルの前置条件と後置条件

class Testclass:
 def test_a(self):
  print("____test_a____")
  assert func(2) == 5
 
 def test_b(self):
  print("____test_b____")
  assert func(2) == 3
 
 def setup(self):
  print("       ")
 
 def teardown(self):
  print("       ")
if __name__ == '__main__':
 pytest.main(["-s","pytest2.py"])
実行結果は以下の通りです

3、クラスレベルの前置条件とバックグラウンド条件

import pytest
 
def func(x):
 return x + 1
 
 
class Testclass:
 def test_a(self):
  print("____test_a____")
  assert func(2) == 5
 
 def test_b(self):
  print("____test_b____")
  assert func(2) == 3
 
 def setup(self):
  print("       ")
 
 def teardown(self):
  print("       ")
  
 def setup_class(self):
  print("      ")
 
 def teardown_class(self):
  print("      ")
if __name__ == '__main__':
 pytest.main(["-s","pytest3.py"])
結果は以下のとおりです

三、pytestの設定ファイルの変更方法を紹介します。
私たちはブログの第一部でpytestフレームワークの運行ルールを紹介しました。ここではpytestのプロファイルを変更して、フレームの運行ルールを変更できます。
まず、ケースのディレクトリの下でpytest.iniのプロファイルを作成します。

内容は以下の通りです

#   pytest.ini  
# [pytest]
# addopts=-s
#      ,         
 
 
# testpaths = testcase
#            
#
# python_files = test_*.py
#        
 
 
# python_classes = Test_*
#      
 
# python_functions = test_*
#        
設定ファイルのスクリーンショット

上記の手順により、pytestの運行規則を変更できます。
四、pytestの断言を紹介する
pytestの断言はpythonの断言で、彼はunittestフレームワークとは違って、彼は自分で断言しました。

# -*- coding:utf-8 -*-
 
# pytest   python     
import pytest
 
def func(x):
 return x + 1
 
 
def test_a():
 print("____test_a____")
 assert func(2) == 5
 
def test_b():
 print("____test_b____")
 assert not func(2) == 3
 
def test_c():
 print("____test_b____")
 assert func(2) in ["a","b","c"]
 
 
def test_d():
 print("____test_b____")
 assert func(2) not in ["a","b","c"]
 
 
if __name__ == '__main__':
 pytest.main(["-s","pytest5.py"])  
五、pytestのマークを紹介する(mark)
1、どのマークが実行されていないかを関数にマークすることができます。
一つの関数は複数のマークを付けられます。一つのタグは同時に複数の関数にマークを付けることができます。このマークの装飾関数を私たちのテストクラスまたはテスト関数に飾るだけです。

class Test_mark():
 @pytest.mark.test01
 def test_a(self):
  print("mark test a")
 
 @pytest.mark.test02
 def test_b(self):
  print("mark test b")
 
 
if __name__ == '__main__':
 pytest.main(['-s',"pytest6.py"])
他にも実行方法があります。

# pytest -m test01
 
# pytest -n "test01 or test02"
 
# pytest -m "not test01"
2、マークは、あるケースをスキップしないようにする役割があります。

# -*- coding:utf-8 -*-
 
import pytest
 
# skip        
@pytest.mark.skip(reson="           ")
def test_a():
 
 print("testa")
 
 
def test_b():
 print("testb")
 
 
@pytest.mark.skip(reson="            ")
class Test_skip():
 def test_a(self):
  print("testa")
 
 def test_b(self):
  print("testb")
 
 
#         ,  ,    
@pytest.mark.skipif(1 > 2,reson="                ")
class Test_skipif():
 def test_a(self):
  print("testa")
 
 def test_b(self):
  print("testb")
六、pytestのデータパラメータ化を紹介します。
1、単一パラメータを導入する

# pytest      
 
# 1、      
#
# pytest.mark.parametrize(argnames,argvalues)
# argnames      
#
# argvalues       ,           ,    list
 
 
@pytest.mark.skip(reson="           ")
def test_a():
 print("testa")
 
 
@pytest.mark.parametrize("name",["cui1","cui2","cui3","cui4"])
def test_b(name):
 print("testb----->{name}".format(name = name))
 
if __name__ == '__main__':
 pytest.main(["-s", "pytest8.py"])
実現した効果nameはパラメータの名前として、このケースは4回実行されます。パラメータはそれぞれname="cui 1"ame="cui 2"\....

2、複数のパラメータが入る

import pytest
 
 
# pytest      
 
# 1、      
#
# pytest.mark.parametrize((argnames1,argnames2),[(argvalues1,argvalues1),(argvalues1,argvalues1)],(argvalues1,argvalues1)]])
 
 
@pytest.mark.skip(reson="           ")
def test_a():
 print("testa")
 
 
@pytest.mark.parametrize(("name","age"),[("cui1",12),("cui2",13),("cui3",14)])
def test_b(name,age):
 print("testb----->{name}----->{age}".format(name = name,age = age))
 
if __name__ == '__main__':
 pytest.main(["-s", "pytest9.py"])
実現した効果は以下の通りです。

七、pyestを紹介する常用第三者プラグイン
1、pytestを美化する出力報告プラグイン

# pip install pytest-html
 
#            
#                 
#
# addopts=-s --html=report.html
効果


2、失敗事例を再試行し、以下の例では失敗再起動3、失敗後2 s間隔で再試行を行っています。

# pip install pytest-rerunfailures
#           
#                
# --reruns 3 --reruns-delay 2
これでpytestの枠組みは基本的に使われていますが、子供たちはまだ分かりませんか?皆さん、ようこそ!
ここではpythonユニットテストフレームワークpytestの使用例についての記事を紹介します。pythonユニットのテストフレームワークpytestの内容については、以前の記事を検索してください。または下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。