高校のプログラミングクラスの評価に単体テストを追加したいと思います。私はこのようになり、ファイルの20提出している場合複数のファイルに対してPythonユニットテストを実行する
は:
def calculateReturn(principle, rate, freq, time):
final = principle * (1 + (rate/freq)) ** (freq * time)
return final
を私はこのようなテスト・ケースを使用することはできますか?
import unittest
class test(unittest.TestCase):
def test1(self):
value = calculateReturn(5000, 0.05, 12, 11)
self.assertAlmostEqual(value, 8235.05, 2)
if __name__ == '__main__':
unittest.main()
この1つの簡単なテストを20個のモジュールで実行するにはどうすればよいですか?
さらに詳しい情報
テストのために私は、x^yの計算のさまざまな方法を示し、そのすべてが3「提出」を作成しました。
submission1.py:
from math import pow
def powerFunction(base, power):
result = pow(base, power)
return result
submission2.py:
def powerFunction(base, power):
result = base ** power
return result
submission3.py:
def powerFunction(base, power):
result = 1
for i in range(power):
result = result * base
return result
テストコードがある:
import unittest
import importlib
class MyTest(unittest.TestCase):
def setUp(self):
pass
def test_power_3_4(self):
self.assertEqual(module.powerFunction(2, 3), 8)
files = ['submission1', 'submission2', 'submission3']
for file in files:
module = importlib.import_module(file)
print module
unittest.main()
テストコードが実行される場合は、コンソール出力がテストされているだけsubmission1を示しています。私はユニットテストを使用しない場合、私が正しく、このアプローチを使用してインポートし、テストすることができ興味深いことに
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
/Users/staff/PycharmProjects/UnitTest/powerTest.py
<module 'submission1' from '/Users/staff/PycharmProjects/UnitTest/
submission1.pyc'>
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
Process finished with exit code 0
を:
import importlib
files = ['submission1', 'submission2', 'submission3']
for file in files:
module = importlib.import_module(file)
print module
print module.powerFunction(2,3)
コンソールの出力は次のとおりです:
/System/Library/Frameworks/Python.framework/Versions/2.7/bin/
python2.7 /Users/staff/PycharmProjects/UnitTest/importlib1.py
<module 'submission1' from '/Users/staff/PycharmProjects/UnitTest/
submission1.pyc'>
8.0
<module 'submission2' from '/Users/staff/PycharmProjects/UnitTest/
submission2.pyc'>
8
<module 'submission3' from '/Users/staff/PycharmProjects/UnitTest/
submission3.pyc'>
8
Process finished with exit code 0
unittestモジュールはここで最善の方法ではないかもしれませんが、私はまだそれを実装する方法に興味があります。
ありがとうジョン。いくつかのサンプルコードを提供できますか? –
@AndrewH:いいえ、あなたはそれを試して、あなたが立ち往生した場合、より具体的な質問をしなければなりません。 –
私は立ち往生しています。それが私が投稿した理由です。とにかくありがとう。 –