Project

General

Profile

Files » test_project.py

UserName LastName, 07/14/2024 02:54 PM

 
import allure
import pytest

from utils.utility_method import get_data_from_yaml, data_list_to_transform

project_name = get_data_from_yaml('create_project', ['project_autouse_id'])[0]
not_autouse_id = get_data_from_yaml('create_project', ['not_autouse_id'])[0]
create_data = ['测试项目', 'demo', '创建测试项目', 'https://www.baidu.com']
update_data = ['测试项目111', 'demo', 'demo测试', 'https://cn.bing.com/?mkt=zh-CN']
module_list = ['问题跟踪', '时间跟踪', '新闻', '文档', '文件', 'wiki', '版本库', '讨论区', '日历', '甘特图']


class TestProject:
@pytest.fixture(scope='function', params=project_name, ids=project_name)
def create_project_only_name(self, project, request):
r = project.add_project()\
.write_project_messages(request.param).click_save()
project_id = r.get_project_identifier()
yield r
r.goto_project_page().delete_project(request.param, project_id)

@allure.title("【正向】创建项目-只填写名称,自动生成标识")
def test_create_project_only_name(self, create_project_only_name):
result = create_project_only_name.get_status()
assert result
assert result == '创建成功'

@pytest.fixture(scope='function', params=data_list_to_transform(not_autouse_id))
def create_project_write_identify(self, request, project):
res = project.add_project() \
.write_project_messages(project_name=request.param[0], project_identifier=request.param[1])\
.click_save()
yield res, request.param[1]
res.goto_project_page().delete_project(request.param[0], request.param[1])

@allure.title("【正向】创建项目-填写名称和标识")
def test_add_project_only_required(self, create_project_write_identify):
r, param = create_project_write_identify
res = r.get_status()
assert res
assert res == '创建成功'
res = r.get_project_identifier()
assert res == param
# 创建后,标识不可修改,获取属性并断言
identify = r.get_identifier_attribute()
assert identify == 'true'

@pytest.fixture()
def project_fixture(self, project):
r = project.add_project()
yield r
r.goto_project_page()

@allure.title("【逆向】创建时,不填写项目名称")
def test_no_name(self, project_fixture):
res = project_fixture \
.write_project_messages(None, "demo") \
.click_save()
r = res.get_error_message()
assert r
assert r == "名称 不能为空字符"

@allure.title("【逆向】创建时,不填写项目标识")
def test_no_identify(self, project_fixture):
res = project_fixture \
.write_project_messages('测试项目') \
.click_save()
r = res.get_error_message()
assert r
assert r == "标识 不能为空字符"

@allure.title("创建项目,填写所有数据")
def test_create_project(self, project_fixture):
res = project_fixture \
.write_project_messages(*create_data) \
.click_save().to_overview()
result = res.get_overview_page_message()
assert result.get('wiki') == create_data[2]
assert result.get('home') == create_data[-1]
assert result.get('name') == create_data[0]
# 清理数据
res.goto_project_page().delete_project(create_data[0], create_data[1])

@allure.title("更新项目信息")
def test_update_project(self, project_fixture):
res = project_fixture.write_project_messages(*create_data) \
.click_save()\
.update_project(update_data[0], *update_data[2:])\
.click_save().to_overview()
result = res.get_overview_page_message()
assert result.get('wiki') == update_data[2]
assert result.get('home') == update_data[-1]
assert result.get('name') == update_data[0]
# 清理数据
res.goto_project_page().delete_project(update_data[0], update_data[1])

@allure.title("搜索项目")
def test_search_project(self, project_fixture):
res = project_fixture.write_project_messages(*create_data) \
.click_save().goto_project_page()
result = res.search(create_data[0], '项目')
# 需要在项目外去搜索,否则搜索类型中没有项目选项
assert result
# 清理数据
res.goto_project_page().delete_project(create_data[0], create_data[1])

@pytest.mark.last
@allure.title("更改项目的模块内容")
def test_project_module(self, create_project):
res = create_project.update_module(module_list[3:5]) \
.click_save().get_module()
assert res == module_list[3:5]




(934-934/982)