开始第一个用例
一、基础演示
import unittest class TestClass(unittest.TestCase): @classmethod def setUpClass(cls) -> None: print("类开始方法") @classmethod def tearDownClass(cls) -> None: print("类的后置方法")
def setUp(self) -> None: print("单条用例前置方法") def tearDown(self) -> None: print("单条用例后置方法")
def test_case1(self): print("测试主要过程111111") def test_case2(self): print("测试主要过程22222") if __name__ == '__main__': unittest.main() """ ============================= test session starts ============================= collecting ... collected 2 items test_01.py::TestClass::test_case1 类开始方法 单条用例前置方法 测试主要过程111111 单条用例后置方法 PASSED test_01.py::TestClass::test_case2 单条用例前置方法 测试主要过程22222 单条用例后置方法 PASSED 类的后置方法 ============================== 2 passed in 0.04s ============================== """ #总结:1.setup 是前置方法,单条用例测试前的准备等操作 # 2.teardown是后置方法,单条用例测试后的清理等操作 # 3.setupclass 是全部用例执行前的前置操作,例如:链接数据库 # 4.setdownclass是全部用例执行后的后置操作,例如:断开数据库
二、用例中的断言如何操作
import unittest class TestClass(unittest.TestCase): def test_case1(self): print("测试主要过程11111") self.assertIn("a","tom", "报错信息:a不在Tom中") #断言a在tom中 self.assertEqual(1, 2, "1和2不相等")
三、unittest有哪些断言方法
#参考地址:https://www.cnblogs.com/NancyRM/p/8377721.html
四、跳过用例,不执行某用例【类似continue】
#skip 方法和 skipIf方法 class TestClass(unittest.TestCase): @unittest.skip #直接跳过当前用例 def test_case3(self): print("测试主要过程33333") @unittest.skipIf(1+1 == 2,"满足条件,暂时不执行此用例") def test_case4(self): print("测试主要过程33333") if __name__ == '__main__': unittest.main() """ ============================= test session starts ============================= collecting ... collected 2 items test_01.py::TestClass::test_case3 test_01.py::TestClass::test_case4 ============================= 2 skipped in 0.04s ============================== Process finished with exit code 0 类开始方法 SKIPPED Skipped SKIPPED (满足条件,暂时不执行此用例) Skipped: 满足条件,暂时不执行此用例 """
五、执行用例方法:unittest.mian()
5.1 unittest.main()方法
if __name__ == '__main__': unittest.main() #执行全部用例 unittest.main(verbosity=2) #执行指定用例
六、加入容器执行方法:TestSuite()
批量执行用例
第一步:先addtest
if __name__ == '__main__': suite = unittest.TestSuite()
suite.addTest(TestClass("test_case1")) #添加用例1 suite.addTest(TestDemo2("test_demo_09")) #添加用例2 unittest.TextTestRunner().run(suite)
第二步:配置文件路径
第三步:执行run
#run运行即可 """ ============================= test session starts ============================= collecting ... collected 2 items test_01.py::TestClass::test_case1 类开始方法 单条用例前置方法 测试主要过程11111 单条用例后置方法 类的后置方法 test_01.py::TestDemo2::test_demo_09 1111111 PASSED ============================== 2 passed in 0.04s ============================== """
批量执行类
if __name__ == '__main__': suite1 = unittest.TestLoader().loadTestsFromTestCase(TestClass) #参数为类名称 # suite2 = unittest.TestLoader().loadTestsFromTestCase() suite = unittest.TestSuite([suite1]) #可以添加多个suite unittest.TextTestRunner(verbosity=2).run(suite)
执行指定文件
if __name__ == '__main__': discover = unittest.defaultTestLoader.discover("./","test*.py") #文件路径 unittest.TextTestRunner().run(discover)