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