【发布时间】:2021-07-01 12:42:06
【问题描述】:
我正在尝试实现一些单元测试,并且我有各种不同的输入文件要调用到我的程序中进行测试。我要测试的功能位于my_file,
对于名为 test_func 的函数。
这是我的代码:
import unittest
import make_html
class TestBuild(unittest.TestCase):
def test_test_func(self):
# Case 1: blank input file -> Return 'Blank'
expected_output = 'Blank'
self.assertEqual(make_html.test_func('blank'),expected_output)
# Case 2: Non-numeric -> Should raise ValueError
with self.assertRaises(ValueError):
make_html.test_func('non_numeric')
if __name__ == '__main__': # run the main file within unit test package
unittest.main()
当我尝试运行这个单元测试时,它只运行了 1 个测试。如果我单独运行它们,它们会返回“OK”。我究竟做错了什么?我如何获得它以便运行两个测试。此外,我想添加更多案例。关于class、self、__name__ 和__main__ 周围的语法,我不太确定这里会发生什么。
更新:我尝试将它分成两个测试,但得到相同的结果:
import unittest
import make_html
class TestBuild(unittest.TestCase):
def test_test_func(self):
# Case 1: blank input file -> Return 'Blank'
expected_output = 'Blank'
self.assertEqual(make_html.test_func('blank'),expected_output)
def test_test_func(self):
# Case 2: Non-numeric -> Should raise ValueError
with self.assertRaises(ValueError):
make_html.test_func('non_numeric')
if __name__ == '__main__': # run the main file within unit test package
unittest.main()
我的输出仍然只是:
----------------------------------------------------------------------
Ran 1 test in 0.001s
【问题讨论】:
-
虽然您编写的内容是合法的,但如果您将测试分成两个单独的测试,您将获得更好的报告。你怎么知道只运行了一次测试,
test_func究竟做了什么? -
你能把你第二个测试的代码也包括进来吗?
-
当您说“测试”时,您是指
asserts 吗?因为从技术上讲,您只有 1 个测试:test_test_func。还请edit 显示您在运行此程序时在控制台/终端上获得的实际输出。如果第一个assert失败,则跳过该测试中的其余assertions。 -
@GinoMempin 哦,我现在明白了。我认为每个断言都是多个测试。我如何将其分成两个单独的测试?
-
在您更新版本的测试中,您使用了相同的方法名称。第二个覆盖第一个。
标签: python python-3.x unit-testing