python unittest库的入门学习
-
unittest的基本概念
- 创建测试用例类
- unittest的使用示例
一、基本概念
Testcase是所有测试用例的基类
TestSuite是创建一个测试“容器”,可以往里面加case
TextTestRunner是运行测试用例
二、如何创建测试用例类
所有的用例类都需要继承TestCase
测试用例中setUp和tearDown是每一个case开始和结束的时候都回执行的
测试用例必须以test开头
还可以在用例类中定义类方法,setUpClass和tearDownClass,在每一个用例类的开始和结尾处都执行一遍。
import unittest #测试类必须要继承unittest.TestCase class TestMethod(unittest.TestCase): @classmethod def setUpClass(cls): print('类执行之前') @classmethod def tearDownClass(cls): print('类结束之后') #每一个测试方法开始要执行的方法 def setUp(self): print("测试方法开始啦") #每一个测试方法结束后执行的方法 def tearDown(self): print("测试方法结束啦") #测试方法必须要以test开头!!! def test01(self): print("这个是测试方法01") def test02(self): print("这个是测试方法02") if __name__=="__main__":
三、使用示例:
import unittest import json from demo import RunMain class TestMethod(unittest.TestCase): def setUp(self): self.run = RunMain() def test_01(self): data = { 'username':'nick', 'password':'123', 'errorCode':'1000' } url = "http://localhost:8000/login/" res = self.run.run_main(url, 'POST', data) #self.assertEqual(res['errorCode'],'1000',"测试成功") print(res) # 打印全局变量 #print(userid) #@unittest.skip('test_02') def test_02(self): # 全局变量 #globlas()['userid'] = '10000' data = { 'username':'nick', 'password':'123', 'errorCode':1001 } url = "http://localhost:8000/login/" res = self.run.run_main(url, 'POST', data) #self.assertEqual(res['errorCode'],'1001',"测试失败") print(res) if __name__ == '__main__': #unittest.main() suite = unittest.TestSuite() suite.addTest(TestMethod('test_02')) suite.addTest(TestMethod('test_01')) unittest.TextTestRunner().run(suite)
globlas()['userid'] = '10000'是全局变量。比如第一个test的执行需要依赖第二个test,这时候就需要一个global,让第二个test也可以访问第一个test方法中的变量或者返回值
assertEqual是断言
@unittest.skip这个装饰器是用于过滤不需要执行的test
main方法中的unittest.main()是执行这个类中的所有代码,如果只想只想部分test,可以先创建一个“容器”suite,再往里面addtest,最后执行容器
unittest.TextTestRunner().run(suite)
示例三:
import HTMLTestRunner import unittest class MyTest(unittest.TestCase):#继承unittest.TestCase def tearDown(self): #每个测试用例执行之后做操作 print('111') def setUp(self): #每个测试用例执行之前做操作 print(22222) def test_run(self): # self.assertEqual(1,1) self.assertIs(1,1) #测试用例 def test_run2(self): # self.assertEqual(1,1) self.assertIs(1,1) #测试用例 def test_run3(self): # self.assertEqual(1,1) self.assertIs(1,1) #测试用例 def test_run1(self): # self.assertEqual(1,1) self.assertIs(1,1) #测试用例 if __name__ == '__main__': test_suite = unittest.TestSuite()#创建一个测试集合 test_suite.addTest(MyTest('test_run1'))#测试套件中添加测试用例 #test_suite.addTest(unittest.makeSuite(MyTest))#使用makeSuite方法添加所有的测试方法 fp = open('res.html','wb')#打开一个保存结果的html文件 runner = HTMLTestRunner.HTMLTestRunner(stream=fp,title='api测试报告',description='测试情况') #生成执行用例的对象 runner.run(test_suite) #执行测试套件
如果执行了之后无法生成测试报告,那就直接在命令行中执行这个py文件就行了,这个是pycharm的毛病。。。
可以参考:https://blog.csdn.net/xie_0723/article/details/50825310
更多uinttest的资料https://www.cnblogs.com/feng0815/p/8045850.html