通过requests + pytest + allure 实现接口自动化测试

​ 通过requests + pytest + allure 实现接口自动化测试


1. 文件导入并读取文件,一般接口文档文件为excl或者csv文件。下面分别读取文件内容:

# csv 文件
url,params,method
http://apis.juhe.cn/simpleWeather/query,"{""city"":""北京"",""key"":""c00bcd3ea3822ee70d7d060e1c8085f6""}",get
http://apis.juhe.cn/sxpd/query,"{""men"":""蛇"",""women"":""羊"",""key"":""bf871cb11079dfbce489822a9461b0b9""}",post
# 读取csv文件
import csv              # 导包
class ReadCsvClass():
    def readCsvMethod(self):
        item = []       # 定义一个空列表
        rr = csv.reader(open("../datas/data.csv", "r"))   # 以读的方式打开csv文件
        for csv_i in rr:             # 循环每一条数据
            # print(csv_i)
            item.append(csv_i)        # 添加到定义好的列表中
        item = item[1:]               # 清洗掉第一行不需要的数据
        return item                  # 以列表的方式返回csv读取的数据


rcc = ReadCsvClass()
print(rcc.readCsvMethod())
# excel 数据
url	params	method
http://apis.juhe.cn/simpleWeather/query	  {"city":"京","key":"c00bcd3ea3822ee70d7d060e1c8085f6"}	get
http://apis.juhe.cn/sxpd/query	{"men":"蛇","women":"羊","key":"bf871cb11079dfbce489822a9461b0b9"}	post

# 读取exclx数据
from openpyxl import load_workbook   # 导包,导入读取Excel文件的包
class UseExcel():
    def get_TestExcel(self):
        # 打开表
        workbook = load_workbook("..\datas\data.xlsx")
        # 定位表单
        sheet = workbook['Sheet1']
        print(sheet.max_row)  # 3 行
        print(sheet.max_column)  # 3 列
        test_data = []  # 把所有行的数据放到列表中
        for i in range(2, sheet.max_row + 1):    # 从第二行开始读取数据,读到最后一行
            sub_data = {}  # 把每行的数据放到字典中
            for j in range(1, sheet.max_column + 1):    # 外层循环控制行,内层循环控制列
                sub_data[sheet.cell(1, j).value] = sheet.cell(i, j).value  # 键值对赋值
            test_data.append(sub_data)  # 拼接每行单元格的数据  并添加到列表中
        return test_data   # 返回一个列表嵌套字典的格式


t = UseExcel()
f = t.get_TestExcel()
print(f)

2.文件读取完成后,通过requests向该接口发送请求,并获取其中的响应码作为判断接口是否成功的标准。

# 请求csv中的接口
from readdatas.readcsv import ReadCsvClass     # 导入读取的数据模块
ecc = ReadCsvClass()             # 实例化
lists = ecc.readCsvMethod()           # 获得读取csv的数据
import requests                   # 导入request的包
class RequestCsvClass():         
    def requestCsvMethod(self):
        item = []
        for csv_i in lists:       # 循环取值,判断请求方式是get还是post,分别利用不同的requests发送请求
            if csv_i[2] == "get":
                rr = requests.get(csv_i[0], params=csv_i[1].encode("utf-8").decode("latin1"))     # .encode("utf-8").decode("latin1"),如果报错,则使用这个
                item.append(rr.status_code)   # 获取响应码并添加
            else:
                rr = requests.post(csv_i[0], data=csv_i[1].encode("utf-8").decode("latin1"))
                item.append(rr.status_code)
        return item       # 返回由响应码组成的列表


rc = RequestCsvClass()
print(rc.requestCsvMethod())
# 请求excel 表中的数据
from readdatas.readxlsx import UseExcel    # 导入读取excle中的数据模块
ue = UseExcel()          # 实例化
lists = ue.get_TestExcel()    # 获取excle表中的数据
import requests
class RequestsExcelClass():
    def requestsExcelMethod(self):
        item = []    # 定义空列表添加状态响应码
        for excel_i in lists:     # 循环取值,判断请求方式是get还是post,分别利用不同的requests发送请求
            if excel_i["method"] == "get":
                rr = requests.get(excel_i["url"], params=excel_i["params"].encode("utf-8").decode("latin1"))
                item.append(rr.status_code)
            else:
                rr = requests.post(excel_i["url"], data=excel_i["params"].encode("utf-8").decode("latin1"))
                item.append(rr.status_code)
        return item  # 返回由状态码组成的数组
rc = RequestsExcelClass()
print(rc.requestsExcelMethod())

3.循环所有的状态码,使获取的状态码与200做对比,如果状态码不等于200,则接口错误

# csv接口文档使用pytest+allure实现错误展示
import pytest, os      # 导包
from requestdata.requcsv import RequestCsvClass # 将含状态码的列表获取
rc = RequestCsvClass()
ff = rc.requestCsvMethod()
class TestClas():
    def test001(self):
        for c in ff:     # 通过pytest断点判断状态码是否为200,不为200则显示错误
            assert c == 200
if __name__ == '__main__':
    pytest.main(['--alluredir', 'report/result', 'tsetcsv.py'])
    split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean'
    os.system(split)         # allure的固定代码

# excle接口文档使用pytest+allure实现错误展示
import pytest, os                 # 同上
from requestdata.readexcl import RequestsExcelClass
rc = RequestsExcelClass()
ff = rc.requestsExcelMethod()
class TestClas():
    def test001(self):
        for c in ff:
            assert c == 200
if __name__ == '__main__':
    pytest.main(['--alluredir', 'report/result', 'testexcl.py'])
    split = 'allure ' + 'generate ' + './report/result ' + '-o ' + './report/html ' + '--clean'
    os.system(split)

找到html文件查看结果

posted @ 2021-06-07 21:08  醉魔君  阅读(218)  评论(0编辑  收藏  举报