Implements #1
This commit is contained in:
parent
c721a7c655
commit
5781e285bf
|
@ -0,0 +1,200 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# @Time : 2023/10/31 14:39
|
||||
# @Author : floraachy
|
||||
# @File : test_repo_issue_flow.py
|
||||
# @Software: PyCharm
|
||||
# @Desc:
|
||||
|
||||
# 标准库导入
|
||||
import os
|
||||
import re
|
||||
# 第三方库导入
|
||||
import allure
|
||||
import pytest
|
||||
from playwright.sync_api import BrowserContext
|
||||
from loguru import logger
|
||||
# 本地应用/模块导入
|
||||
from config.path_config import FILES_DIR
|
||||
from page_objects.projects.issue.repo_issue_page import RepoIssuePage
|
||||
from page_objects.projects.issue.repo_new_issue_page import RepoNewIssuePage
|
||||
from page_objects.projects.issue.repo_issue_detail_page import RepoIssueDetailPage
|
||||
from page_objects.projects.issue.repo_edit_issue_page import RepoEditIssuePage
|
||||
from utils.requests_utils.api_workflow import get_api_data, api_work_flow
|
||||
from config.path_config import INTERFACE_DIR
|
||||
from config.global_vars import GLOBAL_VARS
|
||||
|
||||
|
||||
@pytest.mark.issue
|
||||
class TestRepoIssueFlow:
|
||||
"""疑修"""
|
||||
cases = {
|
||||
"test_new_search_edit_delete_issue": [
|
||||
{"issue_title": "new - ${generate_paragraph(nb=1)}",
|
||||
"issue_desc": "${generate_paragraph()}",
|
||||
"issue_file": " gitlinklogo2.png, gitlinklogo3.jpg",
|
||||
"new_issue_success_message": "疑修创建成功!",
|
||||
"edit_issue_title": "update - ${generate_paragraph(nb=1)}",
|
||||
"edit_issue_desc": "${generate_paragraph()}",
|
||||
"delete_issue_file": "gitlinklogo3.jpg",
|
||||
"file_delete_success_message": "附件删除成功",
|
||||
"update_issue_success_message": "疑修更新成功!",
|
||||
"delete_issue_confirm_message": "您确定要删除当前疑修?",
|
||||
"delete_issue_success_message": "疑修删除成功!",
|
||||
"run": True}],
|
||||
"test_search_copy_delete_issue": [
|
||||
{"new_issue_file": "导入TOC订单.xls, login_demo.yaml",
|
||||
"copy_issue_title": "update - ${generate_paragraph(nb=1)}",
|
||||
"copy_issue_desc": "${generate_paragraph()}",
|
||||
"copy_issue_file": " gitlinklogo2.png, gitlinklogo3.jpg",
|
||||
"copy_issue_success_message": " 疑修复制成功!",
|
||||
"delete_issue_confirm_message": "您确定要删除当前疑修?",
|
||||
"delete_issue_success_message": "疑修删除成功!",
|
||||
"run": True}]
|
||||
}
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def start_for_each(self, request, default_user_context: BrowserContext):
|
||||
logger.info("for each--start: 测试用户打开新建疑修页面")
|
||||
|
||||
# 测试用户
|
||||
user_page = default_user_context.new_page()
|
||||
self.create_issue_page = RepoNewIssuePage(user_page)
|
||||
|
||||
yield
|
||||
logger.info("for each--end: 后置操作")
|
||||
|
||||
@pytest.mark.parametrize("case")
|
||||
def test_new_issue_success(self, case):
|
||||
"""
|
||||
登录 --> 新建疑修 --> 删除疑修
|
||||
"""
|
||||
|
||||
# 进入疑修创建页面
|
||||
self.create_issue_page.navigate(repo_owner=GLOBAL_VARS.get("repo_owner"),
|
||||
repo_identifier=GLOBAL_VARS.get("repo_identifier"))
|
||||
|
||||
issue_title = case.get("issue_title")
|
||||
issue_desc = case.get("issue_desc")
|
||||
# 兼容一下中文逗号,发现有中文逗号,替换为英文逗号, 同时去除file前后空格,与保存文件的目录,拼接出文件的绝对路径
|
||||
issue_files = [os.path.join(FILES_DIR, f.strip()) for f in
|
||||
case.get("issue_file").replace(",", ",").split(",")]
|
||||
# 创建疑修
|
||||
self.create_issue_page.new_issue_flow(issue_title=issue_title, issue_desc=issue_desc, issue_file=issue_files,
|
||||
success_message=case.get("new_issue_success_message"))
|
||||
#
|
||||
# issue_page = RepoIssuePage(self.create_issue_page.page)
|
||||
#
|
||||
# # 点击【疑修(Issue)】导航栏
|
||||
# issue_page.click_issue_nav()
|
||||
# # 页面进入:${repo_owner}/${repo_identifier}/issues
|
||||
# issue_page.have_url(
|
||||
# f"{GLOBAL_VARS.get('repo_owner')}/{GLOBAL_VARS.get('repo_identifier')}/issues")
|
||||
# # 在搜索框中输入疑修标题,点击搜索图标
|
||||
# issue_page.search_issue_by_keyword(text=issue_title)
|
||||
# # 点击疑修标题
|
||||
# issue_page.click_issue_title_on_list(title=issue_title)
|
||||
# # 断言 - 页面进入疑修详情页, 检查网页标题,疑修标题,内容及附件
|
||||
# expected_issue_title = issue_title
|
||||
# # 断言 - 网页标题模糊匹配:expected['issue_title']-疑修
|
||||
# issue_page.have_title(re.compile(f"{expected_issue_title}-疑修-.*"))
|
||||
# # 断言 - 疑修标题,内容及附件
|
||||
# expected_issue_file = issue_files if isinstance(issue_files, list) else [issue_files]
|
||||
# expect_files = []
|
||||
# for issue_file in expected_issue_file:
|
||||
# expect_files.append(os.path.basename(issue_file) if os.path.isabs(issue_file) else issue_file)
|
||||
# RepoIssueDetailPage(issue_page.page).assert_issue_title_desc_attachment(expect_tittle=issue_title,
|
||||
# expect_desc=issue_desc,
|
||||
# expect_attachment=expect_files)
|
||||
#
|
||||
# edit_issue_title = case.get("edit_issue_title")
|
||||
# edit_issue_desc = case.get("edit_issue_desc")
|
||||
# # 检查一下需要删除的附件是否传递错误
|
||||
# # 兼容一下中文逗号,发现有中文逗号,替换为英文逗号, 同时去除file前后空格,与保存文件的目录,拼接出文件的绝对路径
|
||||
# delete_issue_files = [os.path.join(FILES_DIR, f.strip()) for f in
|
||||
# case.get("delete_issue_file").replace(",", ",").split(",")]
|
||||
# logger.error(f"编辑疑修时,需要删除的疑修附件不是疑修有的附件:{delete_issue_files}")
|
||||
#
|
||||
# # 编辑疑修
|
||||
# edit_issue_page = RepoEditIssuePage(issue_page.page)
|
||||
# edit_issue_page.edit_issue_flow(issue_title=edit_issue_title, issue_desc=edit_issue_desc,
|
||||
# delete_issue_file=delete_issue_files,
|
||||
# success_message=case.get("update_issue_success_message"))
|
||||
# # 断言 - 页面进入疑修详情页, 检查网页标题,疑修标题,内容及附件
|
||||
# # 断言网页标题模糊匹配:expected['issue_title']-疑修
|
||||
# edit_issue_page.have_title(re.compile(f"{edit_issue_title}-疑修-.*"))
|
||||
# # 断言 - 疑修标题,内容及附件
|
||||
# expected_issue_file = list(set(issue_files) - set(delete_issue_files))
|
||||
# expect_files = []
|
||||
# for issue_file in expected_issue_file:
|
||||
# expect_files.append(os.path.basename(issue_file) if os.path.isabs(issue_file) else issue_file)
|
||||
#
|
||||
# edit_issue_page.assert_issue_title_desc_attachment(expect_tittle=edit_issue_title,
|
||||
# expect_desc=edit_issue_desc,
|
||||
# expect_attachment=expect_files)
|
||||
|
||||
# 删除疑修
|
||||
RepoIssuePage(page).delete_issue(confirm_message=case.get("delete_issue_confirm_message"),
|
||||
success_message=case.get("delete_issue_success_message"))
|
||||
|
||||
@pytest.mark.parametrize("case")
|
||||
def test_search_copy_delete_issue(self, page: Page, case):
|
||||
"""
|
||||
前提条件:当前存在一个疑修
|
||||
1. 登录
|
||||
2. 访问仓库的疑修详情页
|
||||
3. 复制疑修
|
||||
4. 删除刚刚复制的疑修
|
||||
"""
|
||||
|
||||
# 我有一个疑修,疑修带有附件,附件名称是
|
||||
# 通过接口登录,获取登录cookies
|
||||
if not GLOBAL_VARS.get("cookies"):
|
||||
login_api = get_api_data(api_file_path=os.path.join(INTERFACE_DIR, "test_gitlink_login.yaml"),
|
||||
key="gitlink_login_01")
|
||||
res = api_work_flow(req_data=login_api, source=GLOBAL_VARS)
|
||||
login_cookies = res["cookies"]
|
||||
GLOBAL_VARS["cookies"] = login_cookies
|
||||
# 上传附件,获取附件id
|
||||
issue_files = [f.strip() for f in case.get("new_issue_file").replace(",", ",").split(",")]
|
||||
GLOBAL_VARS["attachment_ids"] = []
|
||||
for file in issue_files:
|
||||
GLOBAL_VARS["file_name"] = file
|
||||
upload_file_api = get_api_data(
|
||||
api_file_path=os.path.join(INTERFACE_DIR, "projects", "test_gitlink_upload_files.yaml"),
|
||||
key="gitlink_upload_file_01")
|
||||
res = api_work_flow(req_data=upload_file_api, source=GLOBAL_VARS)
|
||||
GLOBAL_VARS["attachment_ids"].append(res["attachment_id"])
|
||||
# 新建疑修
|
||||
new_issue_api = get_api_data(
|
||||
api_file_path=os.path.join(INTERFACE_DIR, "projects", "issues", "test_gitlink_repo_new_issue.yaml"),
|
||||
key="gitlink_repo_new_issue_01")
|
||||
res = api_work_flow(req_data=new_issue_api, source=GLOBAL_VARS)
|
||||
|
||||
# 访问疑修详情页
|
||||
issue_index = res["issue_index"]
|
||||
CommonPage(page).navigate(
|
||||
f"{GLOBAL_VARS.get('repo_owner')}/{GLOBAL_VARS.get('repo_identifier')}/issues/{issue_index}")
|
||||
issue_title = case.get("copy_issue_title")
|
||||
issue_desc = case.get("copy_issue_desc")
|
||||
# 兼容一下中文逗号,发现有中文逗号,替换为英文逗号, 同时去除file前后空格,与保存文件的目录,拼接出文件的绝对路径
|
||||
issue_files = [os.path.join(FILES_DIR, f.strip()) for f in
|
||||
case.get("copy_issue_file").replace(",", ",").split(",")]
|
||||
# 复制疑修
|
||||
RepoIssuePage(page).copy_issue(issue_title=issue_title, issue_desc=issue_desc, issue_file=issue_files,
|
||||
success_message=case.get("copy_issue_success_message"))
|
||||
# 断言 - 页面进入疑修详情页, 检查网页标题,疑修标题,内容及附件
|
||||
# 断言网页标题模糊匹配:expected['issue_title']-疑修
|
||||
CommonPage(page).assert_page_title(re.compile(f"{issue_title}-疑修-.*"))
|
||||
|
||||
# 断言 - 疑修标题,内容及附件
|
||||
expected_issue_file = issue_files if isinstance(issue_files, list) else [issue_files]
|
||||
expect_files = []
|
||||
for issue_file in expected_issue_file:
|
||||
expect_files.append(os.path.basename(issue_file) if os.path.isabs(issue_file) else issue_file)
|
||||
RepoIssuePage(page).assert_issue_title_desc_attachment(expect_tittle=issue_title, expect_desc=issue_desc,
|
||||
expect_attachment=expect_files)
|
||||
RepoIssuePage(page).assert_issue_attachments(expect_files)
|
||||
|
||||
# 删除疑修
|
||||
RepoIssuePage(page).delete_issue(confirm_message=case.get("delete_issue_confirm_message"),
|
||||
success_message=case.get("delete_issue_success_message"))
|
Loading…
Reference in New Issue