断言通过时Python unittest调用函数
当测试中的断言通过时,我找不到一种方法来执行\u something()。例如:断言通过时Python unittest调用函数,python,unit-testing,assertions,python-unittest,Python,Unit Testing,Assertions,Python Unittest,当测试中的断言通过时,我找不到一种方法来执行\u something()。例如: def test_one(self): self.assertEqual(1,1, "Did not match") import unittest class TestupSomeStuff(unittest.TestCase): def setUp(self): pass def test_fail(self): return No
def test_one(self):
self.assertEqual(1,1, "Did not match")
import unittest
class TestupSomeStuff(unittest.TestCase):
def setUp(self):
pass
def test_fail(self):
return None
# This is skipped, so test is win
x = 2 * 4
self.assertEqual(x,9,"DID NOT MATCH")
print "FAIL"
def test_pass(self):
x = 2 * 4
self.assertEqual(x,8,"DID NOT MATCH")
# Passed gets printed after the dot for passing the previous test.
print "Passed"
如果断言失败,该测试将打印“不匹配”,但在本例中不会,因此我尝试在self.assertEqual()成功时调用一个函数或打印一些内容,请注意
谢谢这很有效:
import unittest
class TestupSomeStuff(unittest.TestCase):
def setUp(self):
pass
def test_fail(self):
x = 2 * 4
self.assertEqual(x,9,"DID NOT MATCH")
print "Passed"
def test_pass(self):
x = 2 * 4
self.assertEqual(x,8,"DID NOT MATCH")
print "Passed"
if __name__ == "__main__":
unittest.main()
这是因为如果断言失败,那么测试将失败,您将进入下一个测试,但是,当测试成功时,它将继续进行,并且不会返回任何结果
例如:
def test_one(self):
self.assertEqual(1,1, "Did not match")
import unittest
class TestupSomeStuff(unittest.TestCase):
def setUp(self):
pass
def test_fail(self):
return None
# This is skipped, so test is win
x = 2 * 4
self.assertEqual(x,9,"DID NOT MATCH")
print "FAIL"
def test_pass(self):
x = 2 * 4
self.assertEqual(x,8,"DID NOT MATCH")
# Passed gets printed after the dot for passing the previous test.
print "Passed"
印刷品:
.Passed
.
----------------------------------------------------------------------
Ran 2 tests in 0.000s
希望这有帮助 如果您想在某些内容通过时打印,有几个选项。但是,请不要使用。这并不是说这是错误的,只是当
unittest
提供了更好的方法时,您不想用一堆print
消息来扰乱您的测试
冗长
如果要打印每个测试
函数的结果,请设置测试运行程序的详细程度。您可以通过以下两种方式完成此操作:
python-m单元测试发现-v
unittest.main
并将
suite = unittest.TestLoader().loadTestsFromModule(TestModuleName)
results = unittest.TextTestRunner(verbosity=2).run(suite)
TreeReporter
,如下所示:
虽然这有助于实现OP想要的功能,但使用内置工具实现同一功能的方法有很多种。Fair point只是想演示一种打印消息的简单方法,而无需对方法进行子类化即可获得不同的消息。回答很好。当你使用Unittest时,使用print是一个坏主意,它有弄坏标准输出的习惯,并且它经常会使打印语句在实际触发时变得不清楚。更好的方法是不依赖stdout,而是使用pythons日志子系统。