我需要使用
unittest
python 库来执行有关 src/arithmetics.py
文件中的 3 个函数的测试。这是我的项目结构。
.
├── src
│ └── arithmetics.py
└── test
└── lcm
├── __init__.py
├── test_lcm_exception.py
└── test_lcm.py
src/arithmetics.py
def lcm(p, q):
p, q = abs(p), abs(q)
m = p * q
while True:
p %= q
if not p:
return m // q
q %= p
if not q:
return m // p
def lcm_better(p, q):
p, q = abs(p), abs(q)
m = p * q
h = p % q
while h != 0:
p = q
q = h
h = p % q
h = m / q
return h
def lcm_faulty(p, q):
r, m = 0, 0
r = p * q
while (r > p) and (r > q):
if (r % p == 0) and (r % q == 0):
m = r
r = r - 1
return m
test/lcm/test_lcm.py
import unittest
from src.arithmetics import *
class LcmTest(unittest.TestCase):
def test_lcm(self):
for X in range(1, 100):
self.assertTrue(0 == lcm(0, X))
self.assertTrue(X == lcm(X, X))
self.assertTrue(840 == lcm(60, 168))
def test_lcm_better(self):
for X in range(1, 100):
self.assertTrue(0 == lcm_better(0, X))
self.assertTrue(X == lcm_better(X, X))
self.assertTrue(840 == lcm_better(60, 168))
def test_lcm_faulty(self):
self.assertTrue(0 == lcm_faulty(0, 0))
for X in range(1, 100):
self.assertTrue(0 == lcm_faulty(X, 0))
self.assertTrue(0 == lcm_faulty(0, X))
self.assertTrue(840 == lcm_faulty(60, 168))
if __name__ == '__main__':
unittest.main()
test/lcm/test_lcm_exception.py
import unittest
from src.arithmetics import *
class LcmExceptionTest(unittest.TestCase):
def test_lcm_exception(self):
for X in range(0, 100):
self.assertTrue(0 == lcm(0, 0)) # ZeroDivisionError
self.assertTrue(0 == lcm(X, 0)) # ZeroDivisionError
def test_lcm_better_exception(self):
for X in range(0, 100):
self.assertTrue(0 == lcm_better(0, 0)) # ZeroDivisionError
self.assertTrue(0 == lcm_better(X, 0)) # ZeroDivisionError
def test_lcm_faulty_exception(self):
for X in range(1, 100):
self.assertTrue(X == lcm_faulty(X, X)) # ppcm(1, 1) != 1
if __name__ == '__main__':
unittest.main()
test/lcm/__init__.py
是一个空文件
为了执行我的测试,我尝试了这个命令:
python3 -m unittest discover
但是输出是:
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
我不明白如何运行我的测试...
谢谢你帮助我!
__init__.py
丢失了我认为问题是您的子文件夹中缺少文件
__init__.py
。尝试将此(空)文件添加到所有子文件夹中,如下所示:
test_lcm
├── __init__.py
├── src
| └── __init__py
│ └── arithmetics.py
└── test
└── __init__py
└── lcm
├── __init__.py
├── test_lcm_exception.py
└── test_lcm.py
如果你看我的树文件夹,我创建了一个文件夹
test_lcm
作为树的根。您必须执行 cd
命令才能将自己放入该文件夹中。cd
命令(在我的系统中test_lcm
放在我的home文件夹中):
# go to test_lcm folder
cd ~/test_lcm
之后执行:
# execute test
python3 -m unittest discover
输出的最后一部分是:
----------------------------------------------------------------------
Ran 6 tests in 0.002s
FAILED (failures=1, errors=2)
这表明执行了 6 个测试,有 2 个错误(
test_lcm_better_exception
和 test_lcm_exception
失败)。
This 是了解如何定义 Python 包的有用链接。
我特别想强调以下句子:
需要
文件才能使Python将包含该文件的目录视为包。__init__.py