网站Api接口怎么做,app store下载安卓,广西贺州建设局网站,无锡网站建设制作设计# 一、yaml格式
#
# yaml是一种数据类型#xff0c;可以和json之间灵活的切换#xff0c;支持注释、换行、字符串等。可以用于配置文件或编写测试用例。
#
# 数据结构#xff1a;一般是键值对的方式出现。注意编写时值前面必须有空格#xff0c;键#xff1a;#xff08;…# 一、yaml格式
#
# yaml是一种数据类型可以和json之间灵活的切换支持注释、换行、字符串等。可以用于配置文件或编写测试用例。
#
# 数据结构一般是键值对的方式出现。注意编写时值前面必须有空格键空格值。
#
# 如果是数组以-空格 开头来表示
# 二、定义读取yaml测试用例的方法
# Configuration.yaml_util.py
# yaml文件的读、写、删除
import os.path
import yaml# 读取yaml文件
# def read_yml(ymlPath):
# if not os.path.isfile(ymlPath):
# raise FileNotFoundError(文件路径不存在请输入正确的路径)
# f open(ymlPath, r, encodingutf-8)
# cfg f.read()
# d yaml.safe_load(cfg)
# return ddef read_yaml(path):读取yaml文件:param path: 要读取的yaml文件路径:return: 返回yaml内容with open(path, encodingutf-8) as f:value yaml.load(streamf, Loaderyaml.FullLoader)# return value[key]return valuedef write_yaml(path, data):写入yaml文件:param path::param data::return:with open(path, encodingutf-8, modea) as f:yaml.dump(data, streamf, allow_unicodeTrue)def clear_yaml(path):清空yaml文件一般在整个项目执行之前清空:return:with open(path, encodingutf-8, modew) as f:f.truncate()# Configuration.config.yaml
# 用于存储环境地址
# 三、把测试的服务器地址作为配置文件
#
# 测试的服务器正常来讲都是比较固定的但测试环境和正式环境是不同的因此我们将服务器地址抽出来作为配置文件方便切换不同的测试环境。这里将配置文件放在config.yaml文件中。
Host:# 有些系统会有生产环境、小版本环境、测试环境等等所以这里统一管理这些环境地址后面使用的时候来这里调用就行了baseurl: http://192.168.0.103/
#datas.user.yaml
# 用来存储用例
# 不同用例之间用-分隔
-batteryBrandName: 12,batteryRatedCapacity: 12,batteryRatedVoltage: 12,batterySpceC: 12,batterySpceG: 12,batterySpceK: 12,batteryType: 12,batteryTypeName: 12,batteryWeight: 12,cellCount: 12
-batteryBrandName: 13,batteryRatedCapacity: 13,batteryRatedVoltage: 13,batterySpceC: 13,batterySpceG: 13,batterySpceK: 13,batteryType: 13,batteryTypeName: 13,batteryWeight: 13,cellCount: 13#Module.AddBatterTypeInfo.py
# 四、执行测试的用例文件
# 这里结合pytest.mark.parametrize方法实现用例数据驱动。
import pytest
import requests
from Configuration.Logins import login
from Configuration.Logins import host
# from Configuration.yaml_util import read_yaml
from Configuration.yaml_util import *pytest.mark.parametrize(batteryBrandName, batteryRatedCapacity, batteryRatedVoltage, batterySpceC,batterySpceG, batterySpceK, batteryType, batteryTypeName, batteryWeight, cellCount,read_yaml(../datas/user.yaml))
def test_add_batter_type_info(batteryBrandName, batteryRatedCapacity, batteryRatedVoltage, batterySpceC,batterySpceG, batterySpceK, batteryType, batteryTypeName, batteryWeight, cellCount):API_url be/cloud/bsm/batterytypeinfobaseurl read_yaml(../Configuration/config.yaml)[Host][baseurl]FULL_URL baseurl API_url# FULL_URL host() API_urlheader {Authorization: login()}body {batteryBrandName: batteryBrandName,batteryRatedCapacity: batteryRatedCapacity,batteryRatedVoltage: batteryRatedVoltage,batterySpceC: batterySpceC,batterySpceG: batterySpceG,batterySpceK: batterySpceK,batteryType: batteryType,batteryTypeName: batteryTypeName,batteryWeight: batteryWeight,cellCount: cellCount}r requests.post(FULL_URL, headersheader, jsonbody)res r.json()# 上面的两句也可以合成一句 res requests.post(FULL_URL, headersheader, jsonbody).json()print(res)return res# 用于仅执行该文件if __name__ __main__:# test_add_batter_type_info()pytest.main([-s])#Module.BatterTpyeInfo_Search.py
import pytest
import requests
from Configuration.Logins import login
from Configuration.Logins import host# 方法必须是test_开头因为装饰器parametrize是属于pytest框架的
# 在方法中传入这几个参数名信息
# 格式pytest.mark.parametrize(参数1参数2参数3参数4,[(用例1)(用例2)(用例3)]) 每个用例中有四个参数
pytest.mark.parametrize(batteryBrandName,batteryTypeName,batteryType,delFlag,[(乐圆技术, LY6050, , ), (1, 3, 3, 在用)])
def test_battery_type_info_search(batteryBrandName, batteryTypeName, batteryType, delFlag):API_URL be/cloud/bsm/batterytypeinfo/list# 拼接URLFULL_URL host() API_URL# print(实际URL的值为,FULL_URL)header {Authorization: login()}# print(实际URL的值为,header)# 执行用例不要每条用例写一遍了直接引用参数名即可par {batteryBrandName: batteryBrandName,batteryTypeName: batteryTypeName,batteryType: batteryType,delFlag: delFlag}# get请求下参数需要使用【params】来设置# post请求中是使用data或者json来传递的r requests.get(FULL_URL, headersheader, paramspar).json()print(\n, r)return rif __name__ __main__:test_battery_type_info_search()# run.run_case.py
# 调用执行所以模块的所有测试用例
import pytest
from Module.AddBatterTypeInfo import test_add_batter_type_info
from Module.BatteryTypeInfo_Search import test_battery_type_info_search
from Module.battery_type_info_exportSelect import battery_type_info_export# def add_batter_type_info():
# res1 test_add_batter_type_info()
#
#
# def battery_type_info_search():
# res2 test_battery_type_info_search()#
# def battery_type_info_export():
# res3 battery_type_info_export()if __name__ __main__:pytest.main([run_case.py, -s])