yaml文件、装饰器、unittest

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-08-02 22:11:39

yaml文件、装饰器、unittest的相关文章

python文件处理及装饰器

1.文件处理: Python处理文件的流程比较简单,大致分为以下几个: 打开文件==>处理文件==>生成新文件==>写入文件 先说怎么打开一个文件: 打开一个文件可以有多种写法,下面咱一个一个的看其中的异同点: <1>,使用file打开一个文件和使用open打开一个文件,理论上是没啥区别的,就看个人的习惯,不过在Python3之后,貌似不能使用file去打开一个文件了,在Python2中则都可以使用,下面看这句代码: f1 = open('a.txt','r'); 先说下括号

Python + selenium + unittest装饰器 @classmethod

前言 前面讲到unittest里面setUp可以在每次执行用例前执行,这样有效的减少了代码量,但是有个弊端,比如打开浏览器操作,每次执行用例时候都会重新打开,这样就会浪费很多时间. 于是就想是不是可以只打开一次浏览器,执行完用例再关闭呢?这就需要用到装饰器(@classmethod)来解决了. 一.装饰器 1.用setUp与setUpClass区别 setup():每个测试case运行前运行teardown():每个测试case运行完后执行setUpClass():必须使用@classmetho

python unittest框架装饰器

要说单元测试和UI自动化之间的是什么样的一个关系,说说我个人的一些心得体会吧,我并没有太多的这方面经验,由于工作本身就用的少,还有就是功能测试点点对于我这种比较懒惰的人来说,比单元测试复杂...思考单元测试的处理逻辑和UI的对应关系,根据分层自动化的测试思想, UI>>接口>>最底层就是单元,对于单元级别的自动化测试, 是白盒测试范畴, 用一段代码去测试一段代码, 而我们则是需要利用单元测试框架的一些组织驱动单元来编写我们的自动化测试脚本, 而unittest是python自带的单

文件读写追加、函数、入门装饰器

1.文件操作 1.文件名称 2.字符编码 3.动作mode.读写等... f1,文件句柄,file 或者f_handle,f_obj open 打开的指令,windows的指令,windows编码方式默认gbk:linux:utf-8 1)打开文件,产生文件句柄 2)操作文件,操作文件句柄 3)关闭文件 r全读  rb非文字类  r+ r+b w  wb  w+ w+b a  ab  a+ a+b 绝对路径的 f1 = open(r'E:\sss.txt',encoding='gbk')cot

Python(74)_编写装饰器,为多个函数加上记录调用功能,要求每次调用函数都将被调用的函数名写入文件

#-*-coding:utf-8-*- import os import time from functools import wraps ''' 1.编写装饰器,为多个函数加上记录调用功能,要求每次调用函数都将被调用的函数名写入文件 ''' def log(func): def inner(*args,**kwargs): with open('log1.txt','a',encoding='utf-8') as f: f.write(func.__name__+'\n') ret = fun

unittest测试框架_4_装饰器

在运行测试时,有时需要直接跳过某些测试用例,或者当用例符合某个条件时跳过测试. unittest提供了相应的装饰器: @unittest.expectedFailure():不管结果如何,都将测试结果设置为失败 @unittest.skipUnless(condition, reason):条件成立时执行 @unittest.skipIf(condition, reason):条件成立时跳过不执行 @unittest.skip(reason):直接跳过不执行用例 @unittest.expect

装饰器&amp;偏函数与作用域与异常处理与文件读写

装饰器 概念:是一个闭包,把一个函数当做参数返回一个替代版的函数,本质上就是一个返回函数的函数 简单的装饰器 def func1(): print("sunck is a good man") def outer(func): def inner(): print("*** ** * * ***") func() return inner #f是函数func1的加强版本 f = outer(func1) f() 复杂一点的装饰器 def say(name): pri

&lt;每日一题&gt;题目2:编写装饰器,为多个函数加上认证功能(用户账号和密码来源于文件)

这里做个最简单的账号密码验证,主要为了实现装饰器同时对多个函数起作用 1 FLAG = False #加一个变量防止多次登录验证 2 def wrapper(f): 3 def inner(*args,**kwargs): 4 '''登录程序''' 5 global FLAG #将FLAG变量设置成全局变量 6 if FLAG: 7 ret = f(*args, **kwargs) 8 return ret 9 else: 10 username = input('username:') 11

Day4 - 迭代器&amp;生成器、装饰器、Json &amp; pickle 数据序列化、软件目录结构规范

---恢复内容开始--- 本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 需求:列表a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],要求把列表里的每个值加1 1 a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 2 b = [] 3 for i in a: 4 b.append(i+1) 5 a = b 6 print(a) 普通青