接口自动化测试之Yaml数据驱动封装!

一、数据驱动:pytest.mark.parametrize()

首先看个样本:

import pytest
 
class TestData:
    # parametrize有两个值,一个是args_name:参数名,一个是args_value:参数值,可以有多个,进行数据解包
    # args_value可以是:list列表,数组,字典列表,在数据中有多少个值,接口用例就会执行多少次,相等于遍历
 
    # 基础用法  
    @pytest.mark.parametrize('name', ["李四", '王五'])
    def test_data(self, name):
        print(name)
 
    # 多层数据,解包
    @pytest.mark.parametrize('name,age', [["李四", '15岁'], ["王五", '16岁'], ["刘大", '126岁']])
    def test_data1(self, name, age):
        print(name, age)

上面的测试数据都是死的,项目中很少把测试用例 数据写在py文件中,那么就需要单独对数据进行封装,就有了yaml文件或excel文件,进行数据驱动封装

二、了解yaml详情及写法:
一种数据格式
主要作用:
1、配置文件
2、测试用例
数据组成:
1、map对象:键:(空格)值对,如:"a": "b"
2、多组需要用-开头,标注为不同组数据:

-
  name: 正确验证码登录
  request:
    method: get
    url:  http://域名/jeecg-boot/sys/login
    data:
          captcha: Gkak!@#2019s
          checkKey: 1637811815838
          password: 123456
          remember_me: 1
          username: admin
  validate: None
-
  name: 错误验证码登录
  request:
    method: get
    url:  http://ip:端口号/jeecg-boot/sys/login
    data:
          captcha: Gkak!@#2019s
          checkKey: 1637811815838
          password: 123456
          remember_me: 1
          username: admin
现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:822269834【暗号:csdn999】

三、首先我们要读取yaml文件的方法:

之前封装过一个yaml工具类文件,我们只需在里面加入下面这方法即可

 # 读取测试用例的Yaml文件
    def readCaseYaml(self, yamlfileDir, yamlfileName):
        work = os.getcwd() + "/" + yamlfileDir + "/" + yamlfileName
        print(work)
        with open(work, mode='r', encoding='utf-8') as f:
            value = yaml.load(stream=f, Loader=yaml.FullLoader)
        return value

四、统一接口请求封装

因为:如果我么需要多所有的接口请求进行分析处理,日志监控,这样我们就需要制定提取出接口请求的规则:

import json
 
import requests
 
 
class RequestUnit:
    session = requests.session()
 
    def sendRequest(self, method, url, data, **kwargs):
        #把请求方法改成小写
        method = str(method).lower()
        rep = None
        #get请求以params接参数
        if method == "get":
            rep = RequestUnit.session.request(method=method, url=url, params=data, **kwargs)
        # post请求以data接参数,原因:data只能传输简单的只有键值对的dict或者str格式的数据,json一般只能传输dict格式,简单复杂的都可以
        #data可以满足多种格式,那我们只需把都转成str类型
        elif method=="post":
            # 把键值对转换成str类型
            data = json.dumps(data)
            rep = RequestUnit.session.request(method=method, url=url, data=data, **kwargs)
        return rep.text

遗留问题:
1、yaml文件里面怎么使用动态参数
2、yaml文件里面怎么实现文件上次
3、yaml文件怎么实现断言(断言写在py接口请求文件里又过于多了)
4、yaml文件数据量过多咋办
带着问题继续学习思考。。。

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2023-12-08 00:50:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-08 00:50:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-08 00:50:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-08 00:50:02       20 阅读

热门阅读

  1. P2392 kkksc03考前临时抱佛脚

    2023-12-08 00:50:02       38 阅读
  2. std::async

    2023-12-08 00:50:02       46 阅读
  3. shell/bash 让vi/vim显示空格,及tab字符

    2023-12-08 00:50:02       39 阅读
  4. Python 作业答疑_6.15~6.18

    2023-12-08 00:50:02       40 阅读