学习完了如何用yaml文件管理用例,如何进行单元测试,如何产生漂亮的测试报告,那么结合这几点,我们简单学习下unittest+yaml数据驱动来测试。

第一步:首先,我们建一个yaml文件,管理用例,以/api/user/login登录接口为例。

第二步:新建python文件,编写逻辑代码

import unittest,requests
import ddt
from BeautifulReport import BeautifulReport as bf
from urllib import parse
@ddt.ddt #告诉这个类要使用ddt了
class Login(unittest.TestCase):
base_url = 'http://118.24.3.40/'
@ddt.file_data('login.yaml')#ddt帮你读文件,获取文件内容,循环调用函数
def test_request(self,**kwargs):
detail = kwargs.get('detail','没写用例描述')
self._testMethodDoc = detail #动态的用例描述
url = kwargs.get('url')#url
url = parse.urljoin(self.base_url,url)#拼接好url
method = kwargs.get('method','get')#请求方式,默认是get,以防用户未在yaml用例里没写请求方式
data = kwargs.get('data',{}) #请求参数,没有数据的时候默认给一个空字典
header = kwargs.get('header',{})#请求头
cookie = kwargs.get('cookie',{})#cookie
check = kwargs.get('check')
method = method.lower() #便于处理
try:
if method=='get':
res = requests.get(url,params=data,cookies=cookie,headers=header).text
#因为接口有异常的情况下, 可能返回的不是json串,会报错,所以将res转为text类型
else:
res = requests.post(url,data=data,cookies=cookie,headers=header).text
except Exception as e:
print('接口请求出错')
res = e
for c in check:
self.assertIn(c,res,msg='预计结果不符,预期结果【%s】,实际结果【%s】'%(c,res)) sutie = unittest.TestSuite()
sutie.addTest(unittest.makeSuite(Login))
run = bf(sutie)
run.report('login_test','登录测试用例')
# print(run.success_count) #通过的次数
# print(run.failure_count) #失败的次数

unittest框架(三)unittest+yaml数据驱动的更多相关文章

  1. python+unittest框架第六天unittest之优化测试报告

    今天的内容主要是,用第三方的HTMLRUNner 第三方的报告来优化之前第五天批量执行案例的测试报告.案例的部分看第五天的批量执行笔记~ HTMLRUNner他可以生成更美观的测试报告,基于前辈造的车 ...

  2. python之unittest框架实现接口测试实例

    python之unittest框架实现接口测试实例 接口测试的方法有很多种,具体到工具有postman,jmeter,fiddler等,但是工具的局限性是测试数据的组织较差,接口的返回工具的判断有限, ...

  3. unittest 框架

    unittest 框架 学习unittest 很好的一个切入点就是从selenium IDE 录制导出脚本.相信不少新手学习selenium 也是从IED 开始的. IDE学习参考: 菜鸟学自动化测试 ...

  4. 单元测试unittest(基于数据驱动的框架:unittest+HTMLTestRunner/BeautifulReport+yaml+ddt)

    一.定义 unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果 ...

  5. Unittest框架+ddt数据驱动+HTMLTestRunner+sendmail(自动发送测试报告)+git+Jenkins

    本次写的是针对有代码基础的,没基础建议先去学基础,以下所有描述内容都是我已经在公司项目实践成功的!仅供参考 整体思路: 1.接口自动化用的是Python中unittest框架 2.所有的测试数据用例存 ...

  6. Selenium(十七):unittest单元测试框架(三) 脚本分析、编写Web用例

    1. 带unittest的脚本分析 也许你现在心里还有疑问,unittest框架与我们前面所编写的Web自动化测试之间有什么必然联系吗?当然有,既然unittest可以组织.运行测试用例,那么为什么不 ...

  7. 单元测试框架之unittest(三)

    一.摘要 前边的文章我们看到执行测试用例的是通过调用unittest.mian()函数,它会将模块的测试用例收集起来并执行,然而当我们的测试用例增多了以后,这样的执行非常不灵活而且没有效率,我们更愿意 ...

  8. python单元测试框架-unittest(三)之用例执行顺序

    执行顺序规则: 测试类或测试方法的数字与字母顺序0~9,A-Z 执行如下脚本,理解用例执行顺序 #coding=utf-8 import unittest class Test1(unittest.T ...

  9. unittest框架扩展(自动生成用例)自动化-上

    一.思想: 基于数据驱动和代码驱动结合的自动化测试框架. 二.自动化测试框架步骤: 1.获取用例,用例格式:.ymal 2.调用接口 3.校验结果 4.发送测试报告 5.异常处理 6.日志模块 三.基 ...

随机推荐

  1. 扩展方法和Lambda之练习手记

    扩展方法是我们日常开发当中所经常简化代码,提高性能和代码可读性的一个重要开发手段. 扩展方法是一个只能在静态类中声明的静态方法 Lambda 是一个表达式 ,学会了 可以使代码简洁,也是装13的利器. ...

  2. CRC-16校验C#代码

    [csharp] view plaincopyprint? using System; using System.Collections.Generic; using System.Text; usi ...

  3. mybatis由浅入深day02_7查询缓存_7.2一级缓存_一级缓存应用

    7 查询缓存 7.1 什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. 一级缓存是SqlSession级别的缓存.在操作数据库时 ...

  4. C语言100个经典的算法之兔子总数计算内含printf的用法

    语言的学习基础,100个经典的算法 C语言的学习要从基础开始,这里是100个经典的算法-1C语言的学习要从基础开始,这里是100个经典的算法 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一 ...

  5. Xcode模版生成文件头部注释

    在使用Xcode创建工程或者新建类的时候,顶部都会有一些xcode帮我们生成的注释 //// MySingletonClass.h// 单例模式//// Created by mark on 15/8 ...

  6. 【VUE】Mac下vue 开发环境搭建,以及目录结构

    1 安装Node.js 参看 node.js环境安装   http://www.cnblogs.com/richerdyoung/p/7265786.html 2 安装淘宝镜像 npm install ...

  7. struts2基础---->自定义类型转换器

    这一章,我们开始struts2中自定义类型转换器的学习. 自定义类型转换器

  8. LeetCode——N-Queens

    Description: The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that n ...

  9. jQuery数据缓存

    jQuery引入数据缓存机制的原因: 1.储存更DOM节点相关的数据.事件.动画等信息 2.用一种低耦合的方式让DOM节点和数据联系起来 实现原理: 1.jQuery内部创建cache对象 2.为需要 ...

  10. COGS 1224. [SHOI2002]百事世界杯之旅(期望概率)

    COGS 1224. [SHOI2002]百事世界杯之旅 ★   输入文件:pepsi.in   输出文件:pepsi.out   简单对比 时间限制:1 s   内存限制:128 MB [问题描述] ...