在第六目把主函数写好了,先来运行一下主函数

从截图中可以看到,请求参数打印出来了,和excel中填写的一致

但是每个接口的返回值却都是400,提示参数没有传进去,开始不知道是什么原因(因为excel中params的值已经按照requests的要求写成了字典格式);

后来突然想到一个原因:python从excel中解析出来的数据类型不是字典!!,所以无法传递给requests当做请求参数

接着做了如下实验:

运行结果:

果然,数据类型是‘str’,不是‘dict’

知道原因就好办了,利用json库的loads方法将数据反序列化

所以,主函数做如下调整

# coding:utf-8

from base.run_method import RunMain
from util.handle_excel import *
import json class RunTestCase:
def __init__(self):
self.Runmain = RunMain() # 实例化调用get/post请求基类
self.data = HandleExcel() # 实例化操作excel文件类 def go_run(self):
rows_count = self.data.get_rows() # 获取excel行数
for i in range(1,rows_count): # 利用行数进行迭代处理每个接口
url = self.data.get_value(i, get_url()) # 循环获取url的值
# print(url)
method = self.data.get_value(i, get_method()) # 循环获取method的值
data = json.loads(self.data.get_value(i, get_params())) # 循环获取请求参数,并将得到的数据反序列化
# data = self.data.get_value(i, get_params()) # 循环获取请求参数
print(data)
is_run = self.data.get_value(i, get_priority()) # 获取是否运行,即判断excel中priority是不是"H"
if is_run == 'H':
res = self.Runmain.run_main(url, method, data) # 调用get/post主函数
print(res) if __name__ == '__main__':
run = RunTestCase()
run.go_run()

这下能够正确执行了

记录python接口自动化测试--从excel中读取params参数传入requests请求不生效问题的解决过程(第七目)的更多相关文章

  1. 记录python接口自动化测试--根据excel中的期望输出是否存在请求返回的响应来判断用例是否执行成功(第八目)

    1.首先在excel中的expectValue列填好预期结果值 这里判断接口成功的依据是预期结果值是否存在于接口返回的数据中. 首先,要知道在之前封装的get/post请求方法中返回的是‘str’,也 ...

  2. 记录python接口自动化测试--把测试结果写进excel文件(第九目)

    python中一般使用xlrd(excel read)来读取Excel文件,使用xlwt(excel write)来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用xlrd读取 ...

  3. 记录python接口自动化测试--简单总结一下学习过程(第十目)

    至此,从excel文件中循环读取接口到把测试结果写进excel,一个简易的接口自动化测试框架就完成了.大概花了1周的时间,利用下班和周末的时间来理顺思路.编写调试代码,当然现在也还有很多不足,例如没有 ...

  4. 记录python接口自动化测试--requests使用和基本方法封装(第一目)

    之前学习了使用jmeter+ant做接口测试,并实现了接口的批量维护管理(大概500多条用例),对"接口"以及"接口测试"有了一个基础了解,最近找了一些用pyt ...

  5. 记录python接口自动化测试--主函数(第六目)

    把操作excel的方法封装好后,就可以用准备好的接口用例来循环遍历了 我的接口测试用例如下 主函数代码: run_handle_excel.py# coding:utf-8 from base.run ...

  6. 记录python接口自动化测试--把操作excel文件的方法封装起来(第五目)

    前面补充了如何来操作excel文件,这次把如何获取excel文件的sheet对象.行数.单元格数据的方法进行封装,方便后面调用 handle_excel.py# coding:utf-8 import ...

  7. 记录python接口自动化测试--利用unittest生成测试报告(第四目)

    前面介绍了是用unittest管理测试用例,这次看看如何生成html格式的测试报告 生成html格式的测试报告需要用到 HTMLTestRunner,在网上下载了一个HTMLTestRunner.py ...

  8. 记录python接口自动化测试--pycharm执行测试用例时需要使用的姿势(解决if __name__ == "__main__":里面的程序不生效的问题)(第三目)

    1.只运行某一条case 把光标移动到某一条case后面,然后右键,选择"Run..."来运行程序 此时,pycharm会只运行光标所在位置的这一条case 2.如果想执行全部ca ...

  9. 记录python接口自动化测试--unittest框架基本应用(第二目)

    在第一目里写了几个简单demo,并把调用get和post请求的方法封装到了一个类里,这次结合python自带的unittest框架,用之前封装的方法来写一个接口测试demo 1.unittest简单用 ...

随机推荐

  1. RLS自适应滤波器中用矩阵求逆引理来避免求逆运算

    在RLS自适应滤波器的实现过程中,难免不涉及矩阵的求逆运算.而求逆操作双是非常耗时的,一个很自然的想法就是尽可能的避免直接对矩阵进行求逆运算.那么,在RLS自适应滤波器的实现中,有没有一种方法能避免直 ...

  2. 未能从程序集“mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”中加载类型“System.Runtime.CompilerServices.TuppressIldasmAttribute”。已解决

    "/"应用程序中的服务器错误. 未能从程序集"mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77 ...

  3. 洛谷P4180 [Beijing2010组队]次小生成树Tree(最小生成树,LCT,主席树,倍增LCA,倍增,树链剖分)

    洛谷题目传送门 %%%TPLY巨佬和ysner巨佬%%% 他们的题解 思路分析 具体思路都在各位巨佬的题解中.这题做法挺多的,我就不对每个都详细讲了,泛泛而谈吧. 大多数算法都要用kruskal把最小 ...

  4. Mysql遇到 is marked as crashed and should be repaired 问题解决方法

    遇到 找到mysql的安装目录的bin/myisamchk工具,在命令行中输入: myisamchk -c -r /var/lib/mysql/ambari/alert_current.MYI 问题解 ...

  5. SQL语句的学习理解

    1.手电筒当天下载自定义活跃: SELECT user_dim.app_info.app_instance_id FROM [flashlight35-6aae4:com_scroll_sos_fla ...

  6. flask项目部署到阿里云 ubuntu16.04

    title: flask项目部署到阿里云 ubuntu16.04 date: 2018.3.6 项目地址: 我的博客 部署思路参考: Flask Web开发>的个人部署版本,包含学习笔记. 开始 ...

  7. SQL Server 历史SQL执行记录

    编程执行Sql语句难免忘记保存执行的文本,或是意外设备故障多种情况的发生.对于写的简单的Sql语句丢了就丢了,但对于自己写的复杂的丢失就有些慌了, 有时候很难再次写出来,这时候就需要用一些方法找回Sq ...

  8. python数据库连接池设计

    一.背景: 传统访问资源,一般分为一下几个步骤: 1.实例数据驱动对象与链接资源.2.实例操作资源游标.3.获取资源.4.关闭链接资源. 根据以上步骤,我们可以很简单使用这个原始方法来访问资源为我们业 ...

  9. Linux shell 脚本(三)

    转载请标明出处:  http://blog.csdn.net/zwto1/article/details/45111547:  本文出自:[zhang_way的博客专栏] 九.使用case 分支 语法 ...

  10. C#封装程序集属性方法注释说明

    一.使用封装程序集好处: 在很多分布式应用程序开发中,针对每一种功能可能条用的接口不一样,往往习惯将需要被调用的接口,封装成DLL给调用方应用后使用,这样既规范了调用的方式,又避免了调用出现参数请求方 ...