2017-06-19 16 views
2

高校のプログラミングクラスの評価に単体テストを追加したいと思います。私はこのようになり、ファイルの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モジュールはここで最善の方法ではないかもしれませんが、私はまだそれを実装する方法に興味があります。

答えて

0

回答がない1ヶ月間有効だったことを考えれば、間違ったことを求めていることがわかったのです。

私が集めることから、unittestは1つのアプリケーションで一連のテストを実行するためのものです。一連のアプリケーションに対して単一のテストを実行するようには設計されていません。

importlibを調べるためのJohnの提案は、成功への道を私を助けてくれました。ありがとうジョン。

オリジナルのポストアップデートに掲載されたコードは、私の問題の最も適切な解決策であるようです。

0

importlibを使用して、特定のファイルからPythonモジュールを読み込み、それぞれのテストケースを実行できます。

globは、ファイルのリストを作成するのに役立ちます。

+0

ありがとうジョン。いくつかのサンプルコードを提供できますか? –

+0

@AndrewH:いいえ、あなたはそれを試して、あなたが立ち往生した場合、より具体的な質問をしなければなりません。 –

+0

私は立ち往生しています。それが私が投稿した理由です。とにかくありがとう。 –

関連する問題