1.yaml文件的读取
在xxx.yaml文件中写入以下内容:
- method : post url : http://***.***.**.**/api/user/login data : username : **** password : 123456 headers : cookie : sdfsdfsdfsf user-agent : xxxxx- method : post url : http://***.***.**.**/api/user/login data : username : *** password : 123456 headers : cookie : sdfsdfsdfsf user-agent : xxxxx 读取xxx.yaml的数据信息代码为:
import yaml f=open(‘xxx.yaml‘)print(yaml.load(f)) 读取到的信息为:
[{‘data‘: {‘username‘: ‘***‘, ‘password‘: 123456}, ‘url‘: ‘http://***.***.**.**/api/user/login‘, ‘method‘: ‘post‘, ‘headers‘: {‘cookie‘: ‘sdfsdfsdfsf‘, ‘user-agent‘: ‘xxxxx‘}}, {‘data‘: {‘username‘: ‘****‘, ‘password‘: 123456}, ‘url‘: ‘http://***.**.**.**/api/user/login‘, ‘method‘: ‘post‘, ‘headers‘: {‘cookie‘: ‘sdfsdfsdfsf‘, ‘user-agent‘: ‘xxxxx‘}}]
总结:只要遇到‘-’就会形成list的一个元素,遇到换行缩进就会形成一个字典元素
2.装饰器
# 装饰器 器指的就是函数,装饰函数的意思# 在不改变原来函数调用方式、代码情况下,给函数增加新功能
# def taotao(name):# print(name)## ahuang=taotao# 函数即变量,此时taotao没有加括号,即没有调用,把他当做一个变量来传递了# ahuang(‘涛涛‘)和调用taotao(‘涛涛’)是一样的
def timer(func): def add(*args,**kwargs): 写通用装饰器时,加上括号里的参数,可以兼容有传参的功能函数 print(‘开始挣钱‘) res=func(*args,**kwargs) return res 装饰器函数加上返回值,可以兼容有返回值的函数 return add
@timer 语法糖 效果等同于taotao=timer(taotao)def taotao(): print(‘我是涛涛‘)ahuang=timer(taotao)此时taotao=func,开始执行timer,首先定义add,然后返回,此时的ahuang=addahuang()调用add函数 那么把ahuang替换成taotao就相当于在不改变原来调用方式的情况下,给函数增加了新功能 3.单元测试unittest
# 测试用例# 测试用例集合# testrunner 帮你运行用例的 def calc(a,b): return a//b import BeautifulReport as brimport unittestfrom unittest import TestCaseclass MyTest(TestCase):#继承TestCase类 @classmethod def setUpClass(cls):#所有用例执行之前运行它 print(‘我是setup class‘) @classmethod def tearDownClass(cls):#所有用例执行完之后运行它 print(‘我是teardown class‘) def setUp(self): #每条用例运行之前都会执行它 print(‘setup 什么时候运行我呢‘) def tearDown(self):#每条用例运行之后都会执行它 print(‘teardown 什么时候运行我呢‘) def test_calc1(self): ‘‘‘这个用例是测试除法计算器正常的‘‘‘ 在函数里面三个引号加注释,就是每条用例的描述信息 print(‘这是第一条用例‘) res = calc(4,2) self.assertEqual(2,res,‘预期结果和实际结果不符合 预期结果是 2 实际结果是%s‘%res) #预期结果和实际结果比较 def test_calc2(self): ‘‘‘除法计算器第二个部正常‘‘‘ res = calc(5,1) print(‘第二条运行‘) self.assertEqual(1,res) #断言 #a,b
unittest.main() #它可以帮你当前python文件里面的所有测试用例,测试用例的方法名称中必须以test为开头才会被认为是测试用例,用例的执行顺序以测试用例名称中的ascii码的先后顺序为准
test_suite = unittest.TestSuite() #定义一个测试集合#test_suite.addTest(MyTest(‘test_b‘)) #只加入某一个测试用例test_suite.addTest(unittest.makeSuite(MyTest))#把类里面所有的用例都加到集合里面
#下面是不好看的报告# f = open(‘report.html‘,‘wb‘)# runner = HTMLTestRunner.HTMLTestRunner(stream=f, 写入到那个文件# title=‘测试报告‘, 标题# description=‘这个***的测试‘) 报告描述# runner.run(test_suite)#运行哪个用例,此时不能用unittest.main(),这是两种运行方式
# f.close()
#下面是好看的报告 report = br.BeautifulReport(test_suite) report.report(description=‘***测试‘,filename=‘report2.html‘)可以指定报告描述,报告文件名称(不用提前打开),还可以指定保存路径(如果不指定为当前路径) print(report.failure_count) #失败的次数print(report.success_count) #成功的次数
原文地址:https://www.cnblogs.com/kuhaha/p/9499205.html
时间: 2024-10-16 03:00:34