pytest接口自动化框架实际应用

一、自动化实现的目标

1、测试用例数据驱动。
2、测试数据和用例分离。
3、每个测试用例拥有专属的测试数据有明确的测试初始状
4、测试用例的执行不依赖其他测试用例执行所产生的数据
5、建立体系化测试数据,进行数据依赖管理,覆盖全部测试分层策略要求的测试类型
6、在api目录下编写每个业务接口的py文件,主要是用来体现“数据来源:可以调用api获取生产数据作为测试数据”

二、框架目录

在这里插入图片描述

三、实现逻辑

在这里插入图片描述
testcase举例:

test_data = read_yaml(os.path.join(get_project_root(), "data", 'u4a', 'create_tenant_data.yml'))


@allure.description("验证正常创建租户接口")
@pytest.mark.parametrize("case_data", test_data['case_test_create_tenant_normal'],
                         ids=jmespath.search("case_test_create_tenant_normal[].case_desc", test_data))
def test_create_tenant_normal(login, case_data):
    # 创建租户
    resp = create_tenant(login=login, clusterid=user_env('cluster_id'), tenant_name=case_data['tenant_name'],
                         displayName=case_data['tenant_displayname'], owner=user_env('username'))
    # 查询租户列表存在该租户
    resp_search = get_tenant_list(login)

    # 断言
    # Assert.assert_code(resp.status_code, 200)
    Assert.assert_body(resp['data']['tenantCreate']['displayName'], case_data['tenant_displayname'])
    Assert.assert_body(resp['data']['tenantCreate']['name'], case_data['tenant_name'])
    Assert.assert_contain(jmespath.search("data.tenants[].name", resp_search), case_data['tenant_name'])

    # 清理
    delete_tenant(login, tenant_name=case_data['tenant_name'])

data:
在这里插入图片描述

上述例子,获取data中定义的对应数据,,通过数据驱动方式进行挨个请求,方法中引用了在conftest.py中定义的登录获取token的实现方法,请求已经定义好的api,传入必要参数,最后进行相关的断言,最后进行清理,实现了标题一下的自动化实现目标

四、统一入口

可以在这里定义运行哪些用例,或者直接在终端执行也行

# code=utf-8

import pytest
from common.environment_manager import user_env, init_env

if __name__ == "__main__":
    # 初始化环境信息
    init_env("tamp_env_example.yaml")  # 初始化环境变量文件变量

    pytest.main(
        ['-s', '-q', '../testcases/u4a/test_project_manage.py', '--clean-alluredir', '--alluredir=../allure-reports'])



五、其它问题

1.如何执行的?
通过jenkins来执行
2.产品有多个版本,如何管理的?
通过git设置不同分支来管理对应版本,每个版本的自动化用例,就指定执行哪个版本的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值