day11_unittest单元测试框架
同步IO就是在网上下载文件,立即就下载了
异步IO效率比较高,就像买火车票不用在这等着,等票来了自动就通知你
MQ就是存放消息的队列,取走一个就删除一个
unittest单元测试框架的概念:
什么是框架?
框架就是别人已经封装好的一些代码,它已经有了一些功能,咱们直接用就行了
什么是测试框架?
unittest是单元测试的一个框架,unittest是python的标准包,可以直接导入用,执行用例,校验结果,产生测试报告这些步骤都可以通过unittest来实现
import unittest
class MyTest(unittest.TestCase):
@classmethod
def setUpClass(cls):
print('什么时候执行我呢,我是setUpClass') # 这个是类下面所有用例运行之前先运行的
@classmethod
def tearDownClass(cls):
print('什么时候执行我呢,我是tearDownClass') # 这个是类下面所有用例运行之后运行的
def setUp(self): # setUp是每个用例运行之前都会先运行它,不管用例通过或者失败
print('每个用例运行之前都会先运行我')
def tearDown(self): # tearDown是每个用例运行之后都会运行它,不管用例通过或者失败
print('每个用例运行之后都会先运行我')
def test_gch(self):
print('test_gch')
self.assertEqual(1,1)
def test_ssj(self):
print('test_ssj')
self.assertEqual('a','a')
if __name__ == '__main__':
unittest.main() # 运行所有测试用例,这种方式是不能产生报告的
如果每条用例都要执行的一些同样的操作,那么就写到setUpClass或tearDownClass里头,上面的代码运行结果如下:
如果测试用例不是以test开头,那么不会运行它,每个def定义的函数代表一个用例,assertEqual是比较两个值是否相等,如果代码里有多个class,unittest.main()也会运行所有的用例
unittest中运行用例的顺序是按照test后面的字母从小到大运行的
unittest中运行用例的两种方式:
1、如果不想生成报告,可以用右键Run Unittests in xx.py文件这种方式,如果想生成报告,不要用Run Unittests in xx.py文件这种方式运行,要点击pycharm上的Run按钮,再点击Run...,选择想要运行的文件就好
2、如果右键只出现.py文件,直接运行就好
xmlrunner这个模块产生的报告在Jenkins上面能看到,首先要pip install xmlrunner,然后import xmlrunner,output是指文件保存到哪里,.代表当前目录下,也可以output='XXX',目录名字随便起,如果要生成XML后缀的测试报告,用下面的代码,类的代码也要加上
if __name__ == '__main__':
suite = unittest.TestSuite() # 定义一个空的测试集合
suite.addTest(unittest.makeSuite(My)) # 一次性加载一个类文件下所有测试用例到suite中去
suite.addTest(unittest.makeSuite(My2)) # 一次性加载一个类文件下所有测试用例到suite中去
runner2 = xmlrunner.XMLTestRunner(output = '.') # .代表当前目录下生成测试报告,也可以事先创建一个目录,在该目录下生成报告
runner2.run(suite)
在当前目录下生成xml文件,前面有类名和日期,供Jenkins使用