pytest接口自动化测试结合单元测试框架pytest+数据驱动模型+allure

Posted 程序员二黑.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pytest接口自动化测试结合单元测试框架pytest+数据驱动模型+allure相关的知识,希望对你有一定的参考价值。

api: 存储测试接口

conftest.py :设置前置操作

         目前前置操作:1、获取token并传入headers,2、获取命令行参数给到环境变量,指定运行环境

commmon:存储封装的公共方法

     connect_mysql.py:连接数据库
     http_requests.py: 封装自己的请求方法
     logger.py: 封装输出日志文件
     read_yaml.py:读取yaml文件测试用例数据
     read_save_data.py:读取保存的数据文件

case: 存放所有的测试用例

data:存放测试需要的数据
save_data: 存放接口返回数据、接口下载文件
test_data: 存放测试用例依赖数据
upload_data: 存放上传接口文件

logs: 存放输出的日志文件

report: 存放测试输出报告

getpathinfo.py :封装项目测试路径

pytest.int :配置文件

requirement.txt: 本地python包(pip install -r requirements.txt 安装项目中所有python包)

run_main.py: 项目运行文件

# 结构设计

1.每一个接口用例组合在一个测试类里面生成一个py文件

2.将每个用例调用的接口封装在一个测试类里面生成一个py文件

3.将测试数据存放在yml文件中通过parametrize进行参数化,实现数据驱动

4.通过allure生成测试报告

## 代码展示
api/api_service.py #需要测试的一类接口

‘’’
Code description:服务相关接口
Create time: 2020/12/3
Developer: 叶修
‘’’
import os
from common.http_requests import HttpRequests

class Api_Auth_Service(object):

def __init__(self):
    self.headers = HttpRequests().headers

def api_home_service_list(self):
    # 首页服务列表
    # url = "http://192.168.2.199:9092/v1/auth/auth_service/findAuthService"
    url = os.environ["host"] + "/v1/auth/auth_service/findAuthService"  # 读取conftest.py文件地址进行拼接
    response = HttpRequests().get(url, headers=self.headers, verify=False)
    # print(response.json())
    return response

def get_service_id(self):
    #获取银行卡三要素认证服务id
    url = "http://192.168.2.199:9092/v1/auth/auth_service/findAuthService"
    #url = os.environ["host"] + "/v1/auth/auth_service/findAuthService"  # 读取conftest.py文件地址进行拼接
    response = HttpRequests().get(url,headers=self.headers)
    #print(response.json()['data'][0]['service_list'][0]['id'])
    service_id = response.json()['data'][0]['service_list'][1]['id']
    return service_id

def api_service_info(self,serviceId='0b6cf45bec757afa7ee7209d30012ce1',developerId=''):
    #服务详情
    body = 
        "serviceId" :serviceId,
        "developerId":developerId
    
    url = "http://192.168.2.199:9092/v1/auth/auth_service/findServiceDetail"
    #url = os.environ["host"] + "/v1/auth/auth_service/findServiceDetail"#读取conftest.py文件地址进行拼接
    response = HttpRequests().get(url,headers=self.headers,params = body,verify=False)
    #print(response.json())
    return response

def api_add_or_update_service(self,api_param_req,api_param_res,description,error_code,icon,id,interface_remarks,
                          name,product_info,request_method,sample_code,sort,type,url):
    #服务添加或者更新
    body=
            "api_param_req": api_param_req,
            "api_param_res": api_param_res,
            "description": description,
            "error_code": error_code,
            "icon": icon,
            "id": id,
            "interface_remarks": interface_remarks,
            "name": name,
            "product_info": product_info,
            "request_method": request_method,
            "sample_code": sample_code,
            "sort": sort,
            "type": type,
            "url": url,
    
    #url = "http://192.168.2.199:9092/v1/auth/auth_service/insertOrUpdateService"
    url = os.environ["host"] + "/v1/auth/auth_service/insertOrUpdateService"  # 读取conftest.py文件地址进行拼接
    response = HttpRequests().post(url,json=body,headers=self.headers,verify=False)
    return response

def api_add_service_price(self,id,max_number,money,service_id,small_number):
    #服务价格添加
    body = 
        "id": id,
        "max_number": max_number,
        "money": money,
        "service_id": service_id,
        "small_number": small_number
    
    # url = "http://192.168.2.199:9092/v1/auth/auth_service/insertServicePrice"
    url = os.environ["host"] + "/v1/auth/auth_service/insertServicePrice"  # 读取conftest.py文件地址进行拼接
    response = HttpRequests().post(url, json=body, headers=self.headers, verify=False)
    return response

def api_apply_service(self,developer_id,service_id):
    #申请服务
    body =
        "developer_id": developer_id,
        "service_id": service_id
    
    # url = "http://192.168.2.199:9092/v1/auth/auth_service/applyService"
    url = os.environ["host"] + "/v1/auth/auth_service/applyService"  # 读取conftest.py文件地址进行拼接
    response = HttpRequests().post(url, json=body, headers=self.headers, verify=False)
    return response

if name == ‘main’:
#Auth_Service().api_home_service_list()
Api_Auth_Service().get_service_id()
#Auth_Service().api_service_info()

api_service.py

**最后:下方这份完整的软件测试视频学习教程已经整理上传完成,朋友们如果需要可以自行免费领取 【保证100%免费】**

![](https://img-blog.csdnimg.cn/5de4729f538d4c8e8774f46cbc48891f.png#pic_center)

![在这里插入图片描述](https://img-blog.csdnimg.cn/1b48e1bf50c947a0b047dab446f9a23a.png#pic_center)

以上是关于pytest接口自动化测试结合单元测试框架pytest+数据驱动模型+allure的主要内容,如果未能解决你的问题,请参考以下文章

python单元测试框架——pytest

python+allure+jenkins接口自动化测试框架搭建

pytest接口自动化测试框架 | pytest结合二次封装实现接口自动化

Python接口自动化测试之pytest与unittest区别

Python接口自动化测试之pytest与unittest区别

pytest接口自动化测试框架 | conftest.py和@pytest.fixture()结合