python自动化框架pytest+excel_pytest+excel实现的接口自动化测试框架

本文介绍了一个基于python自动化框架pytest和excel的接口自动化测试框架。通过读取excel数据,结合pytest参数化运行测试用例,利用allure生成测试报告,并实现了依赖处理和结果验证功能。
摘要由CSDN通过智能技术生成

# -*- coding:utf-8 -*-

"""

@project: apiAutoTest

@author: zy7y

@file: test_api.py

@ide: PyCharm

@time: 2020/7/31

"""

import json

import shutil

import jsonpath

from loguru import logger

import pytest

import allure

from api.base_requests import BaseRequest

from tools.read_config import ReadConfig

from tools.read_data import ReadData

rc = ReadConfig()

base_url = rc.read_serve_config('dev')

token_reg, res_reg = rc.read_response_reg()

case_data_path = rc.read_file_path('case_data')

report_data = rc.read_file_path('report_data')

report_generate = rc.read_file_path('report_generate')

log_path = rc.read_file_path('log_path')

report_zip = rc.read_file_path('report_zip')

email_setting = rc.read_email_setting()

data_list, title_ids = ReadData(case_data_path).get_data()

br = BaseRequest()

token_header = {}

no_token_header = {}

class TestApiAuto(object):

def start_run_test(self):

import os

if os.path.exists('../report') and os.path.exists('../log'):

shutil.rmtree(path='../report')

shutil.rmtree(path='../log')

logger.add(log_path)

pytest.main(args=[f'--alluredir={report_data}'])

# # 启动一个web服务的报告

# os.system('allure serve ./report/data')

os.system(f'allure generate {report_data} -o {report_generate} --clean')

logger.debug('报告已生成')

def treating_data(self, is_token, dependent, data):

if is_token == '':

header = no_token_header

else:

header = token_header

logger.info(f'处理依赖时data的数据:{data}')

if dependent != '':

dependent_data = ReadData(case_data_path).read_actual(dependent)

logger.debug(f'依赖数据解析获得的字典{dependent_data}')

if data != '':

# 合并组成一个新的data

dependent_data.update(json.loads(data))

data = dependent_data

logger.debug(f'data有数据,依赖有数据时 {data}')

else:

# 赋值给data

data = dependent_data

logger.debug(f'data无数据,依赖有数据时 {data}')

else:

if data == '':

data = None

logger.debug(f'data无数据,依赖无数据时 {data}')

else:

data = json.loads(data)

logger.debug(f'data有数据,依赖无数据 {data}')

return data, header

@pytest.mark.parametrize('case_number,path,is_token,method,file_var,'

'file_path,dependent,data,expect,actual', data_list, ids=title_ids)

def test_main(self, case_number, path, is_token, method, file_var, file_path,

dependent, data, expect, actual):

with allure.step("处理相关数据依赖,header"):

data, header = self.treating_data(is_token, dependent, data)

with allure.step("发送请求,取得响应结果的json串"):

res = br.base_requests(method=method, url=base_url + path, file_var=file_var, file_path=file_path,

data=data, header=header)

with allure.step("将响应结果的内容写入用例中的实际结果栏"):

ReadData(case_data_path).write_result(case_number, res)

# 写token的接口必须是要正确无误能返回token的

if is_token == '写':

with allure.step("从登录后的响应中提取token到header中"):

token_header['Authorization'] = jsonpath.jsonpath(res, token_reg)[0]

logger.info(f'token_header: {token_header}, \n no_token_header: {no_token_header}')

with allure.step("根据配置文件的提取响应规则提取实际数据"):

really = jsonpath.jsonpath(res, res_reg)[0]

with allure.step("处理读取出来的预期结果响应"):

expect = eval(expect)

with allure.step("预期结果与实际响应进行断言操作"):

assert really == expect

logger.info(f'完整的json响应: {res}\n 需要校验的数据字典: {really}\n 预期校验的数据字典: {expect}\n 测试结果: {really == expect}')

if __name__ == '__main__':

from tools.zip_file import zipDir

from tools.send_email import send_email

t1 = TestApiAuto()

t1.start_run_test()

zipDir(report_generate, report_zip)

send_email(email_setting)

Python是一种广泛使用的编程语言,因其易学易用、灵活性和可扩展性而备受欢迎。requests是Python的一个库,它提供了一种简单且易于使用的方式来发送HTTP请求。pytestPython的另一个库,它提供了一种用于编写和运行测试的框架。allure是一个测试报告生成工具,可以为测试结果提供美观和易读的报告。 在接口自动化测试中,可以使用Python的requests库来发送HTTP请求,并使用pytest框架来编写和运行测试。可以使用Excel来存储测试数据、预期结果和实际结果。使用allure工具可以生成美观的测试报告。 以下是使用Python requests、pytest和allure进行接口自动化测试的一般步骤: 1. 安装Python、requests、pytest和allure 2. 创建一个Excel文件,输入测试数据、预期结果和实际结果 3. 创建一个pytest测试文件,并使用requests库发送HTTP请求,比较预期结果和实际结果 4. 在pytest测试文件中添加allure装饰器,以便生成测试报告 5. 运行pytest测试文件并生成allure测试报告 例如,以下是一个使用Python requests、pytest和allure进行接口自动化测试的示例代码: ```python import requests import pytest import allure import openpyxl @allure.title("测试接口") @pytest.mark.parametrize("test_input, expected", [(1, "success"), (2, "fail")]) def test_api(test_input, expected): # 从Excel文件中获取测试数据和预期结果 wb = openpyxl.load_workbook("testdata.xlsx") sheet = wb.active test_data = sheet.cell(row=test_input, column=1).value expected_result = sheet.cell(row=test_input, column=2).value # 发送HTTP请求 response = requests.get("http://example.com/api", params=test_data) actual_result = response.text # 比较预期结果和实际结果 assert actual_result == expected_result, f"预期结果:{expected_result},实际结果:{actual_result}" # 添加allure描述 allure.attach("请求参数", str(test_data)) allure.attach("预期结果", str(expected_result)) allure.attach("实际结果", str(actual_result)) ``` 在上面的代码中,使用了pytest的parametrize装饰器来传递测试数据和预期结果。使用openpyxl库从Excel文件中获取测试数据和预期结果。使用requests库发送HTTP请求并比较预期结果和实际结果。使用allure的装饰器来添加测试描述。最后,运行pytest测试文件并生成allure测试报告。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值