接口自动化测试--参数的传递

本文介绍了一套车险比价流程的接口自动化方案,包括数据源的产生、险种选择、接口参数的传递与复用等关键环节,特别讨论了通过XML文件管理和配置参数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在写一个车险比价流程的接口自动化,各个接口之间涉及到一些参数的传递与复用,做以下总结:
数据源的产生:基本的车辆信息 险种选择

  • 车辆信息
    车辆信息倘若固定下来,接口自动化的意义就不打了,我们要能够根据当前日期选择合适的车辆信息(一般在上年车险至期前60天),数据来源选择:数据库
  • 险种选择
    险种:交强险+商业险 +车船税;商业险又可分为:车损险,三者险…;对于这些信息字段固定,各个车辆的复用性较高,抽离出来作为配置文件配置

接口简化可概括为两个方面:

  1. 生成代表用户信息及车辆信息的insured_id
  2. 根据当前报价区域选择可报价的保险公司进行比价报价

参数的传递选择:XML文件
选择整个流程用到的所有参数作为key生成xml文件,接口请求的时候根据所需要的参数选择合适的value;
生成xml

	host = config.get_data('mysql').get('host')
    port = config.get_data('mysql').get('port')
    user = config.get_data('mysql').get('user')
    passwd = config.get_data('mysql').get('passwd')
    db = config.get_data('mysql').get('db')
    helper = MysqlHelper(host=host,port=port,db= db,user=user,passwd=passwd)
    dictdata = helper.get_xubao(province=province,city=liben,company=company,date=date)[0]
    dictinsure = config.get_data('insured')
    dictdata = dict(dictdata, **dictinsure)
    impl = minidom.getDOMImplementation()
    doc = impl.createDocument(None, None, None)
    rootElement = doc.createElement('dates')
    for key, value in dictdata.items():
        # 创建子元素
        childElement = doc.createElement('date')
        # 为子元素添加id属性
        childElement.setAttribute('name', str(key))
        childElement.setAttribute('value', str(value))
        # 将子元素追加到根元素中
        rootElement.appendChild(childElement)
        # 将拼接好的根元素追加到dom对象
        doc.appendChild(rootElement)
        # 打开test.xml文件 准备写入
    filename = os.path.join(Path().get_data_path(),filename)
    f = open(filename, 'w', encoding='UTF-8')
    # 清空数据
    f.seek(0)
    f.truncate()
    # 写入文件
    doc.writexml(f, addindent=' ', newl='\n', encoding='UTF-8')
    # 关闭
    f.close()

接口参数读与写文件

 			url, params, method = self.get_duojia_data_info('test_get_car_model_no_info')
            for key in params:
                params[key] = self.fg.getValueByName(key)
            basehttp = self.accesss(url, params, method)
            basehttp.set_cookie(self.cookie)
            r = basehttp.get_post()
            #选择最接近的车型
            diff = []
                for i in range(len(r.json()['data'])):
                    diffvalue = abs(
                        r.json()['data'][i]['price'] / float(10000) - float(self.fg.getValueByName('price')))
                    diff.append(diffvalue)
                index = diff.index(min(diff))
                self.fg.setValueByName('price', value=str(r.json()['data'][index]['price'] / float(10000)))
                self.fg.setValueByName('seat_num', value=str(r.json()['data'][index]['seat']))
                self.fg.setValueByName('selected_car_model_detail',
                                       value=json.dumps(r.json()['data'][index], sort_keys=True, indent=4,
                                                        separators=(',', ':'),
                                                        ensure_ascii=False))
                                                       

参数化报价

#报价
@pytest.mark.parametrize("province,city,insurance_company,filename",all_data)
def test_record_price(get_duojia_data_info,province,city,insurance_company,filename):
	pass
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值