在函数内部创建Unittest类不工作



在附加的脚本中为什么0个测试用例正在运行

import unittest

def smg():
def add(x, y):
return x + y
class SimpleTest(unittest.TestCase):
def testadd1(self):
self.assertEquals(add(4, 5), 9)

if __name__ == '__main__':
unittest.main()
smg()

Ran 0 tests in 0.000s 

可以做些什么来修复它,请帮助

您可能对unittest感兴趣。TextTestRunner:

一个基本的测试运行器实现,输出结果到一个流。

示例用法:

然而,如果你想定制你的测试套件的构建,你可以自己做:

def suite():
suite = unittest.TestSuite()
suite.addTest(WidgetTestCase('test_default_widget_size'))
suite.addTest(WidgetTestCase('test_widget_resize'))
return suite
if __name__ == '__main__':
runner = unittest.TextTestRunner()
runner.run(suite())

为您的情况运行示例。

src.py

def add(x, y):
print("Add", x, y)
return x + y

testrongrc.py

import unittest
from src import add

class SimpleTest(unittest.TestCase):
def testadd1(self):
self.assertEqual(add(4, 5), 9)
if __name__ == '__main__':
unittest.main()

运行测试是正常的

$ python test_src.py  # Using unittest
Add 4 5
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
$ pytest -q  # Using pytest
.                                                                                                                                                                                                   
1 passed in 0.06s

现在如果你想通过函数手动调用它。

run_tests.py

import unittest
import test_src

def suite():
suite = unittest.TestSuite()
suite.addTest(test_src.SimpleTest('testadd1'))
return suite

def run():
runner = unittest.TextTestRunner()
runner.run(suite())
# run()  # Uncomment if you want to try to run it as a script e.g. <python run_tests.py>

您现在可以导入文件并在需要时调用run():

$ python3
>>> import run_tests
>>> run_tests.run()
Add 4 5
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
>>> 

取出smg函数内部的代码,然后使用python -m unittest <Your Filename>.py从命令行运行测试。

你的代码看起来像这样:


import unittest

def add(x, y):
return x + y

class SimpleTest(unittest.TestCase):
def testadd1(self):
self.assertEquals(add(4, 5), 9)

if __name__ == '__main__':
unittest.main()

对于assertEquals,您也可能得到一个弃用警告。您可能需要将其更改为assertEqual

相关内容

  • 没有找到相关文章