同步IO就是在网上下载文件,立即就下载了

异步IO效率比较高,就像买火车票不用在这等着,等票来了自动就通知你

MQ就是存放消息的队列,取走一个就删除一个

 

什么是框架?

框架就是别人已经封装好的一些代码,它已经有了一些功能,咱们直接用就行了

什么是测试框架?

unittest是单元测试的一个框架,unittest是python的标准包,可以直接导入用,执行用例,校验结果,产生测试报告这些步骤都可以通过unittest来实现

TestCase就是测试用例

TestSuite就是多个用例集合在一起,就是TestSuite

TestLoader就是加载TestCase到TestSuite中的

TestRunner是来执行测试用例的,测试的结果会保存到TestResult实例中,包括运行了多少测试用例,成功了多少,失败了多少等信息

import unittest
import HTMLTestRunner
class My(unittest.TestCase):
    def testa(self):
        self.assertEqual(1,11)
    def lanxia(self):
        self.assertEqual('lanxia','jiamengyuan')
if __name__ == '__main__':
    unittest.main() # 运行所有测试用例,这种方式是不能产生报告的

如果测试用例不是以test开头,那么不会运行它,每个def定义的函数代表一个用例

assertEqual是比较两个值是否相等,如果代码里有多个class,unittest.main()也会运行所有的用例

HTMLTestRunner是帮助产生测试报告的,把HTMLTestRunner.py这个文件放到环境变量里,最简单的方法就是把HTMLTestRunner.py复制到下面的目录里,这里我是放到了Lib目录下,以后即使在别的目录下也可以使用

如果想运行某一个用例或多个用例用下面的代码实现,导入HTMLTestRunner,鼠标要放在__main__上面运行代码,要不然就会出问题,也可以在pycharm下的Terminal里运行当前文件,wb是写入模式,适用于所有写入的模式,b是bytes,写入图片

import unittest
import HTMLTestRunner
class My(unittest.TestCase): # 必须继承unittest.TestCase这个类
    def testa(self):
        '''测试a''' # 会有用例描述
        self.assertEqual(1,2)
    def testssj(self): # 函数名必须以test开头才能执行
        '''测试ssj的''' # 会有用例描述
        self.assertEqual(1,1)
def testb(self):
        '''测试b'''
        self.assertEqual('12','12')
if __name__ == '__main__':
    suite = unittest.TestSuite() # 定义一个空的测试集合
    # suite.addTest(My('testa')) # 添加某个测试用例
    # suite.addTest(My('testb')) # 添加某个测试用例
    suite.addTest(unittest.makeSuite(My)) # 一次性加载一个类文件下所有测试用例到suite中去
    fw = open('ssj.html','wb') # wb写入模式,b是bytes,可以写入图片
    runner = HTMLTestRunner.HTMLTestRunner(stream = fw,title = '测试报告',description = '孙树江的第一个测试报告')
    runner.run(suite)

运行完成后在pycharm里打印出F.,.代表用例通过,F代表用例失败

unittese框架下载地址_开发工具

在当前目录里会生成ssj.html这个文件,点开ssj.html在当前页面点击右上角的任意一个浏览器,如下图

 

unittese框架下载地址_运维_02

 

以google浏览器为例会在浏览器里生成测试报告,如下图

unittese框架下载地址_测试_03

 

点击All会显示具体用例执行的情况,点开fail会看到具体的报错信息

使用suite.addTest(unittest.makeSuite(My))一次性加载一个类文件下所有测试用例到suite中去,如果脚本中还有其他类就把类名传进去即可,红框中是对该用例的注释,HTMLTestRunner这个模块产生的报告,是给咱们自己看的

 

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使用