PytestとUnitest
初めてPythonの開発を始めたとき、主にunittestをユニットテストフレームワークとして使用しました.しかし、GithubやStackOverflowでは、pytestを推奨する開発者はunittestよりずっと多い.なぜならpyttestはunittestに比べて使いやすく、Pythonスタイルガイド(PEP 8)に従って簡潔なコードを書くのに役立ち、fixtureの使用、custom assertの使用などの利点があるからです.
Pytest vs Unittest
上記のコードをテストするために作成されたUnitテストコードは以下の通りです. unitestフレームワークはTestCaseにインポートされます. TestCaseを継承するCalTestクラスを生成します. に必要なテストボックスをCalTest内で作成する方法. を検証するために、 Pytest
それでは今回はPytestでテストコードを書きましょう.
それ以外にもPytestには多くの利点があります.組み込みUnitestと一緒に作業し、簡単な文法で簡単に起動できます.また、Fixtureを使用すると、コードの重複を減らすことができ、Fixtureを1つのファイルに集約し、すべてのテストコードで共有して使用することができます.
後でPytestをさらに整理します
Pytest vs Unittest
samplecode.py
ファイルにCalc
クラスがあると仮定し、以下に示す.# samplecode.py
class Calc:
def __init__(self):
pass
def addtion(self, a, b):
return a + b
def subtraction(self, a, b):
return a - b
def division(self, a, b):
return a/b
Unittest上記のコードをテストするために作成されたUnitテストコードは以下の通りです.
import unittest
from samplecode import Calc
class CalcTest(unittest.TestCase):
def setUp(self):
self.a = Calc()
def test_addition(self):
self.assertEqual(self.a.addtion(1,2), 3)
def test_subtraction(self):
self.assertEqual(self.a.subtraction(2,1), 1)
def test_division(self):
self.assertEqual(self.a.division(4,2), 2)
簡単なテストコードなので毒性が良く欠点がないと思われるかもしれませんが、Unittestが作成したテストコードの操作は複雑で次のようになります.unittest.TestCase
〜self.assert*
の方法が使用される.それでは今回はPytestでテストコードを書きましょう.
import pytest
from samplecode import Calc
@pytest.fixture
def calc():
a = Calc()
return a
def test_addition(calc):
assert calc.addtion(1,2) == 3
def test_subtraction(calc):
assert calc.subtraction(2, 1) == 1
def test_division(calc):
assert calc.division(4, 2) == 2
Pytestを使用することで、他のモジュールや使用クラスをインポートする必要はありません.また、self.assert*
の方法のように何かを勉強したり覚えたりする必要はありません.それ以外にもPytestには多くの利点があります.組み込みUnitestと一緒に作業し、簡単な文法で簡単に起動できます.また、Fixtureを使用すると、コードの重複を減らすことができ、Fixtureを1つのファイルに集約し、すべてのテストコードで共有して使用することができます.
後でPytestをさらに整理します
Reference
この問題について(PytestとUnitest), 我々は、より多くの情報をここで見つけました https://velog.io/@tkjung/TDD-Pytest-그리고-Unittestテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol