gpt4 book ai didi

python - 对多个文件运行 Python unittest 测试

转载 作者:太空宇宙 更新时间:2023-11-04 00:34:37 30 4
gpt4 key购买 nike

我想将单元测试添加到我的高中编程课的评估中。

如果我提交了 20 个如下所示的文件:

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()

如何在 20 个模块上运行这个简单的测试?

更多信息

为了测试,我创建了三个“提交”,所有这些都显示了计算 x^y 的不同方法。

submission1.py:

from math import pow

def powerFunction(base, power):
result = pow(base, power)
return result

提交2.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 模块很可能不是这里最好的方法,但我仍然对如何实现它很感兴趣。

最佳答案

您可以使用 importlib从特定文件加载 Python 模块,然后在每个模块上运行测试用例。

glob可能有助于创建文件列表。

关于python - 对多个文件运行 Python unittest 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44620766/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com