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