一.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 自动读取文件中的内容去循环执行

 



posted on 2018-11-26 17:21  lilyzhang_18  阅读(446)  评论(0编辑  收藏  举报