zoukankan      html  css  js  c++  java
  • PYTHON自动化Day11- yaml来管理用例,unittest框架,好用的报告类,ddt自动循环执行

    一.yaml来管理测试用例(比excel方便)

    #pip install nnlog
    from nnlog import Logger
    log=Logger('zl.log')
    log.debug('打印log')
    log.info('xx')
    log.surprise()
    
    #BeautifulReport 在F:BaiduNetdiskDownload自动化BeautifulReport, 吧这个文件夹拷贝到pycharm里,执行以下setup.py即可安装成功。
    #pip install yaml 安装yaml模块
    #HTMLTestRunner.py 文件放到 pycharm 中 External Libraries/Lib/  下面
    
    import BeautifulReport,yaml,HTMLTestRunner

    yaml类型文件用来管理测试用例:

    -   #变成list
      url : /api/user/login
      method : post
      data :
        username : niuhanyangn
        passwd : aA123456   #密码  注意注释和值之间添加空格,不然会被当做值
    #要加空格才会变颜色
    #嵌套字典,前面加空格即可
    
      headers:
        User-agent : Firefox
    
      cookies:
        sign : sldkfjsldlsd
    
      check:
        error_code : 0
    
    -
      url : /api/user/login
      method : post
      data :
        - 1
        - 2
        - 3
        - '4'
    #要加空格才会变颜色
    #嵌套字典,前面加空格即可
    
      headers:
        User-agent : Firefox
    
      cookies:
        sign : sldkfjsldlsd
    
      check:
        error_code : 0
    
    #因为字典里key不能重复,所以我们需要用list存放测试用例

    用python解析一下:

    import yaml
    
    f=open('login.yaml',encoding='utf-8')
    res=yaml.load(f)
    print(res)

    结果返回字典

    二.unittest框架:

    传统的测试方法:

    def calc(a,b):
        return round(a/b,1)
    
    # res=calc(1,2)
    # if res==0.5:
    #     print('通过')
    #
    # calc()
    # calc("s","22")
    # calc(1,0)      传统的测试方法

    使用unittest:

    import unittest
    import HTMLTestRunner  #用于生成测试报告
    # from BeautifulReport import BeautifulReport as bf
    from BeautifulReport.BeautifulReport import BeautifulReport as bf  #因为太长所以我们给他加别名“bf”
    
    def calc(a,b):
        return round(a/b,1)
    
    # res=calc(1,2)
    # if res==0.5:
    #     print('通过')
    #
    # calc()
    # calc("s","22")
    # calc(1,0)      传统的测试方法
    
    #使用unittest, 类名不必须test开头
    class TestCale(unittest.TestCase):  #unittest.TestCase 类变成测试用例
        
        @classmethod   #类方法,unittest里面规定就这么用
        def setUpClass(cls):   #所有用例运行前运行(这个类中的方法执行前运行)
            print('setUpClass')
    
        @classmethod
        def tearDownClass(cls):   #所有用例运行后运行(这个类中的方法都执行完成之后运行)
            print("tearDownClass")
    
        def setUp(self):   #每个用例方法运行之前运行
            print("setUp")
    
        def tearDown(self):  #每个用例方法运行之后运行
            print('tearDown')
    
        def testliuwei(self):   #必须要以test开头才能被识别为测试用例
            # res = calc(1,2)
            # self.assertEqual(0.5,res,'计算不正确')
            '''测试1'''        #会显示在方法名后面作为注释
            print('testl')
            self.assertEqual(1,1)
    
        def testzch(self):
            # res=calc(1,0)
            # self.assertIsNone(res)
            """测试2"""
            print('testz')
            self.assertEqual(1,2)
    
        def testa(self):
            print('testa')
            self.assertEqual(1, 1)
    
        def testb(self):
            print('testb')
            self.assertEqual(1, 2)
    
    #普通的调用来执行, 调试时用,如果使用下面的出报告的方法运行,看不到执行的打印信息
    unittest.main()  # 会自动运行所有测试用例
        ####### 不要右键运行,不会生成报告,要Run-run...来运行  ,是以python文件方式来执行,而不是pycharm来执行
    
    #用suite方式运行:
    #用例集 测试套件
        #存放测试用例
    # 1,先把所有用例放到用例集里
    # 2.运行测试用例
    # 3.产生报告
    suite=unittest.TestSuite()  #测试集合
    suite.addTest(unittest.makeSuite(TestCale))  #把刚才写的用例添加用makeSuite加进来
    f=open('test.html',"wb")
    # #用HTMLTestRunner运行然后生成报告
    runner=HTMLTestRunner.HTMLTestRunner(f,title='用例标题',description="描述")
    runner.run(suite)  #运行
    ####### 不要右键运行,不会生成报告,要Run-run...来运行  ,是以python文件方式来执行,而不是pycharm来
    #
    #用beautifulreport运行然后生成报告
    suite=unittest.TestSuite()
    suite.addTest(unittest.makeSuite(TestCale))
    run=bf(suite)  #实例化
    run.report(description='描述必须写',filename='test')
    ####### 不要右键运行,不会生成报告,要Run-run...来运行  ,是以python文件方式来执行,而不是pycharm来执行
    #运行的顺序根据test后面的首字母排序
    HTMLTestRunner的测试报告样式:

    beautifulreport的测试结果样式:

     三.ddt 自动读取文件中的内容去循环执行

    
    
    
    
  • 相关阅读:
    JS刷新当前页面的几种方法总结
    C#实现,C++实现,JS实现 阿拉伯数字金额转换为中文大写金额
    SQL server 生成数据字典
    jquery操作复选框(checkbox)的一些小技巧总结
    HTML中的几种空格
    C#几个经常用到的字符串截取
    关于百度地图API和jqGrid踩到的坑
    SQL常见问题积累
    JS实用小函数 数据是否合法或存在 获取当前日期时间
    vs2010 学习Silverlight学习笔记(13):数据与通信之WCF
  • 原文地址:https://www.cnblogs.com/lilyzhang-2018/p/9952652.html
Copyright © 2011-2022 走看看