真的是魔鬼藏于细节,今天又踩了一个坑。
import unittest # 测试例子 class MyTestCase(unittest.TestCase): def setUp(self): # self.number = input("Enter a num") # self.number = int(self.number) print("setUp") self.number = 10 # 方法必须要以test开头 def test_something(self): self.assertEqual(self.number, 10, 'Your input is not 10') def test_something2(self): aa = True self.assertEqual(aa, True) def tearDown(self): print('Test end') # if __name__ == '__main__': # unittest.main()
import unittest from testsuites import testFirst # 执行单元测试例子方式1 def doTest(): suite = unittest.TestSuite() suite.addTest(testFirst.MyTestCase("test_something")) suite.addTest(testFirst.MyTestCase("test_something2")) runner = unittest.TextTestRunner() runner.run(suite) # 执行单元测试例子方式2,执行所有的 def discoverAll(): case_path = 'testsuites' suite = unittest.TestLoader().discover(case_path) runner = unittest.TextTestRunner() runner.run(suite) if __name__ == '__main__': # doTest() discoverAll()
Python上使用unitTest时,因为看了一些资料,知道测方法名要以test开头,实践的过程中发现相对于的py文件命名也必须以test开头,否则会报Ran 0 tests in 0.000s,也就是说并没有执行相关的单元测试。
相同的问题,导致了HTMLTestRunner产生的报告里面,没有一个测试用例pass,感觉HTMLTestRunner没有正常运行。