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