一、自动化实现的目标
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-8import pytest
from common.environment_manager import user_env, init_envif __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设置不同分支来管理对应版本,每个版本的自动化用例,就指定执行哪个版本的