接口自动化测试 unittest+request+excel(踩‘坑’)

Posted hemingwei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口自动化测试 unittest+request+excel(踩‘坑’)相关的知识,希望对你有一定的参考价值。

通过运行主函数,返回的参数,报json解析错误

技术图片

 

 正常的返回参数,应该如图

技术图片

 

 造成这个原因的是:

python从excel中解析出来的数据类型不是字典,是字符串,所以无法传递给requests当做请求参数

需用用json.loads()转成字典格式,然后进行传参

对python从Excel中解析出来的数据类型进行测试一波

#!/usr/bin/env python3
# -*-coding:utf-8-*-
# __author__: hunter

import xlrd
import json
import requests

data = xlrd.open_workbook(D:/hunter_/interfaceTest/interface/tool/demo2.xlsx)
sheet = data.sheet_by_index(0)

url = sheet.cell_value(1, 5)
data1 = sheet.cell_value(1, 9)
#data2 = json.loads(data1)
print(从Excel中提取出来的params为:, data1)
print(从Excel中提取出来的params的数据类型为:, type(data1))
#print(type(data2))

结果:可以看到结果是字符串类型

技术图片

 

 加入json.load进行转换:转成字典类型

技术图片

 

 

主函数进行修改:

#!/usr/bin/env python3
# -*-coding:utf-8-*-
# __author__: hunter

from conn.run_demo import RunMain
from interface.tool.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)
            print(=====)
            method = self.data.get_value(i, get_mothod())   # 循环获取method的值
            data = json.loads(self.data.get_value(i, get_params()))     # 循环获取请求参数
            print(data)
            print(=====)
            is_run = self.data.get_value(i, get_priority()) # 获取是否运行,即判断Excel中priority是不是为“high"
            if is_run == high:
                res = self.Runmain.run_main(url, method, data)  # 调用主函数
                print(res)
                print(=====)


if __name__ == __main__:
    run = RunTestCase()
    run.go_run()

其中还有一个坑就是:

通过Excel进行传参,数据内容,格式只能用双引号,不然就会报错:

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes

以上是关于接口自动化测试 unittest+request+excel(踩‘坑’)的主要内容,如果未能解决你的问题,请参考以下文章

python3+requests+unittest:接口自动化测试

python+requests+unittest 搭建接口自动化测试框架

接口自动化测试 unittest+request+excel

Python+unittest+requests 接口自动化测试框架搭建 完整的框架搭建过程 实战

接口自动化测试(Python+Requests+Unittest)

接口自动化测试(Python+Requests+Unittest)