Commit 22b60c14 authored by 齐 振鋆's avatar 齐 振鋆
Browse files

个人代码迁移

parent c6ba7a8b
Pipeline #10140 failed with stages
in 3 seconds
# -*- coding:utf-8 -*-
# 作者:齐振鋆
# 日期:2023/3/12
# 描述:
first_menu = '调拨管理'
'''
@Project :test_guke
@File :transfer_in.py
@IDE :PyCharm
@Author :何凯
@Date :2023/3/17 16:00
@desc :调拨入库单
'''
import logging
from random import randint
import allure
from time import sleep
from component.GuKeYiTiHua import iframe, menu, list_page, button, order_detail_main, order_detail_table, \
modal
from component.GuKeYiTiHua.Transfer import first_menu
from unit.public.YamlUtil import UtilYaml
log = logging.getLogger(__name__)
class TransferIn(object):
third_menu = '调拨入库单'
def __init__(self):
self.iframe = iframe
self.menu = menu
self.list_page = list_page
self.button = button
self.order_detail_main = order_detail_main
# self.order_detail_table = order_detail_table
# self.modal = modal
@allure.step('打开菜单:{}'.format(third_menu))
def open_menu_transfer_in(self):
self.iframe.out_frame()
self.menu.open_menu(first_menu, self.third_menu)
@allure.step('查询:{}'.format(third_menu))
def transfer_in_search(self, tap_name='待办视图', order_code=None, count=1):
self.list_page.order_search(self.third_menu, tap_name, '调拨出库单号', order_code, count)
@allure.step('提交:{}'.format(third_menu))
def transfer_in_code_create(self, order_code=None):
log.info('调拨入库单提交')
self.iframe.to_main_iframe()
self.transfer_in_search(order_code=order_code)
self.list_page.open_order('订单号')
self.order_detail_main.choose_tap('主体信息')
log.info('获取调拨入库单号')
transfer_in_code = ''
while transfer_in_code.startswith('OT') is False:
sleep(1)
transfer_in_code = self.order_detail_main.get_element_text('调拨入库单号 ')
self.menu.dd.set_value('transfer_in_code', transfer_in_code)
UtilYaml(self.menu.dd.get_value('extract_path')).write_yaml({'transfer_in_code': transfer_in_code})
self.button.submit()
self.list_page.edit_iframe_is_show()
def transfer_in_code_cancel(self, order_code=None):
log.info('调拨入库单整单取消')
self.transfer_in_search(tap_name='已办视图',order_code=order_code,count=1)
self.list_page.checked_order(0)
self.button.click_button(button_name='整单取消')
self.button.click_button(root_str="//div[contains(@class,'is-message-box')]", button_name="是")
'''
@Project :gukeyitihua
@File :1.py
@IDE :PyCharm
@Author :何凯
@Date :2023/3/12 10:35
@desc :调拨出库单
'''
import logging
from random import randint
import allure
from time import sleep
from SeleniumLibrary.errors import ElementNotFound
from component.GuKeYiTiHua import iframe, menu, list_page, button, order_detail_main, order_detail_table, \
modal
from component.GuKeYiTiHua.Transfer import first_menu
from unit.public.YamlUtil import UtilYaml
log = logging.getLogger(__name__)
class TransferOut(object):
third_menu = '调拨出库单'
def __init__(self):
self.iframe = iframe
self.menu = menu
self.list_page = list_page
self.button = button
self.order_detail_main = order_detail_main
self.order_detail_table = order_detail_table
self.modal = modal
@allure.step('打开菜单:{}'.format(third_menu))
def open_menu_transfer_out(self):
self.iframe.out_frame()
self.menu.open_menu(first_menu, self.third_menu)
@allure.step('查询:{}'.format(third_menu))
def transfer_out_search(self, tap_name='待办', order_code=None, count=1):
self.list_page.order_search(self.third_menu, tap_name, '调拨出库单号', order_code, count)
@allure.step('新建:{}'.format(third_menu))
def transfer_out_code_create(self,order_code=None):
test_data_info = self.menu.dd.get_value('test_data_info')
log.info('创建调拨出库单')
self.iframe.to_main_iframe()
if order_code is None:
self.button.new()
else:
self.transfer_out_search(order_code=order_code)
self.list_page.open_order('调拨出库订单号')
self.order_detail_main.choose_tap('主体信息')
self.order_detail_main.some_click_item('公司名称 ')
company_code = test_data_info['company']
self.modal.search_and_choose_items(placeholder='模糊检索:公司名称,公司编码', text=company_code)
try:
self.button.click_button(root_str="//div[contains(@class, 'is-message-box')]", button_name='确定')
except Exception:
pass
self.order_detail_main.some_click_item('业务员 ')
customer_code = test_data_info['counterman']
self.modal.search_and_choose_items(title='选择业务员(关联部门)(调拨)', text=customer_code)
self.order_detail_main.choose_tap('仓库信息')
lend_warehouse_code =test_data_info['warehouse_lend']
self.order_detail_main.some_click_item('调拨出库仓库名称 ')
self.modal.search_and_choose_items(title='选择调拨出库仓库', text=lend_warehouse_code)
borrow_warehouse_code = test_data_info['warehouse_borrow']
self.order_detail_main.some_click_item('调拨入库仓库名称 ')
self.modal.search_and_choose_items(title='选择调拨入库仓库', text=borrow_warehouse_code)
self.order_detail_main.choose_tap('主体信息')
self.button.save()
log.info('获取调拨出库单号')
transfer_out_code = ''
while transfer_out_code.startswith('ST') is False:
sleep(1)
transfer_out_code = self.order_detail_main.get_element_text('调拨出库订单号 ')
self.menu.dd.set_value('transfer_out_code', transfer_out_code)
UtilYaml(self.menu.dd.get_value('extract_path')).write_yaml({'transfer_out_code': transfer_out_code})
log.info('添加商品')
self.button.click_button(button_name='商品信息')
goods = test_data_info['goods']
self.modal.search_and_choose_items(placeholder='模糊检索:商品编码,商品全称,规格型号,厂家物料编码,生产厂家编码,行类型,产品描述,是否免备案',
text=goods)
sleep(5 * len(goods))
self.order_detail_table.get_cell_text('商品名称', goods[0])
for good in goods:
self.order_detail_table.input_text('调拨数量', good, randint(2, 5))
self.button.submit()
self.list_page.edit_iframe_is_show()
@allure.step('办理:{}'.format(third_menu))
def transfer_out_code_transact(self, order_code):
log.info('调拨出库单办理/审批')
self.transfer_out_search(order_code=order_code, count=1)
self.list_page.open_order('调拨出库订单号')
self.button.transact()
self.list_page.edit_iframe_is_show()
\ No newline at end of file
'''
@Project :test_guke
@File :transfer_out_red.py
@IDE :PyCharm
@Author :何凯
@Date :2023/3/25 14:38
@desc :调拨出库红冲单
'''
import logging
import time
from random import randint
import allure
from time import sleep
from component.GuKeYiTiHua import iframe, menu, list_page, button, order_detail_main, order_detail_table, \
modal
from component.GuKeYiTiHua.Transfer import first_menu
from unit.public.YamlUtil import UtilYaml
log = logging.getLogger(__name__)
class TransferOutRed(object):
third_menu = '调拨出库红冲单'
def __init__(self):
self.iframe = iframe
self.menu = menu
self.list_page = list_page
self.button = button
self.order_detail_main = order_detail_main
self.order_detail_table = order_detail_table
self.modal = modal
@allure.step('打开菜单:{}'.format(third_menu))
def open_menu_transfer_out_red(self):
self.iframe.out_frame()
self.menu.open_menu(first_menu, self.third_menu)
# @allure.step('查询:{}'.format(third_menu))
# def transfer_in_search(self, tap_name='待办视图', order_code=None, count=1):
# self.list_page.order_search(self.third_menu, tap_name, '调拨出库单号', order_code, count)
@allure.step('新建:{}'.format(third_menu))
def transfer_out_red_code_create(self, order_code=None):
log.info('创建调拨出库红冲单')
self.iframe.to_main_iframe()
self.button.red_flush()
self.list_page.checked_order(0)
self.button.click_button(button_name='整单红冲')
# -*- coding:utf-8 -*-
# 作者:齐振鋆
# 日期:2023/2/14
# 描述: 骨科一体化项目
from page.GuKeYiTiHua.DBQuery.db_query import DBQuery
from page.GuKeYiTiHua.Public.OrderListPage import OrderList
from page.GuKeYiTiHua.Public.errorMsg import ErrorMessage
from page.GuKeYiTiHua.Public.iFrame import IframeElement
from page.GuKeYiTiHua.Public.menu import MenuElement
from page.GuKeYiTiHua.Public.modalBox import ModalBoxElement
from page.GuKeYiTiHua.Public.button import ButtonElement
from page.GuKeYiTiHua.Public.orderDetailPage import OrderDetailMain, OrderDetailTable
from page.GuKeYiTiHua.Public.table import Table
iframe = IframeElement()
menu = MenuElement()
list_page = OrderList()
button = ButtonElement()
order_detail_main = OrderDetailMain()
order_detail_table = OrderDetailTable()
modal = ModalBoxElement()
em = ErrorMessage()
dbq = DBQuery()
table = Table()
# -*- coding:utf-8 -*-
# 作者:齐振鋆
# 日期:2023/2/27
# 描述:
first_menu = '采购管理'
# -*- coding:utf-8 -*-
# 作者:齐振鋆
# 日期:2023/2/27
# 描述:
# -*- coding:utf-8 -*-
# 作者:齐振鋆
# 日期:2023/2/27
# 描述:
# -*- coding:utf-8 -*-
# 作者:齐振鋆
# 日期:2023/2/27
# 描述:
import logging
import allure
from time import sleep
from selenium.common.exceptions import TimeoutException
from component.GuKeYiTiHua import iframe, menu, list_page, button, order_detail_main, order_detail_table, \
modal
from component.GuKeYiTiHua.purchaseManage import first_menu
from unit.public.YamlUtil import UtilYaml
log = logging.getLogger(__name__)
class PurchaseOP(object):
third_menu = '普通采购订单'
def __init__(self):
self.iframe = iframe
self.menu = menu
self.list_page = list_page
self.button = button
self.order_detail_main = order_detail_main
self.order_detail_table = order_detail_table
self.modal = modal
@allure.step('打开菜单:{}'.format(third_menu))
def open_menu_purchase_op(self):
self.iframe.out_frame()
self.menu.open_menu(first_menu, self.third_menu)
@allure.step('查询:{}'.format(third_menu))
def purchase_op_search(self, tap_name='待办', order_code=None, count=1):
self.list_page.order_search(self.third_menu, tap_name, '订单号', order_code, count)
@allure.step('新建:{}'.format(third_menu))
def purchase_op_create(self, order_code=None):
log.info('新建采购订单(OP)')
self.iframe.out_frame()
self.iframe.to_main_iframe()
if order_code is None:
self.button.new()
else:
self.purchase_op_search(order_code=order_code)
self.list_page.open_order('订单号')
self.order_detail_main.choose_tap('主体信息')
# self.order_detail_main.some_click_item('公司名称 ')
# company_code = self.menu.dd.get_value('test_data_info')['company']
# self.modal.search_and_choose_items(placeholder='模糊检索:公司名称,公司编码', text=company_code)
# try:
# self.button.click_button(root_str="//div[contains(@class, 'is-message-box')]", button_name='确定')
# except TimeoutException:
# pass
# self.order_detail_main.choose_tap('仓库信息')
self.order_detail_main.some_click_item('仓库名称 ')
warehouse_code = self.menu.dd.get_value('test_data_info')['warehouse']
self.modal.search_and_choose_items(title='选择仓库', text=warehouse_code)
# ------
self.order_detail_main.choose_tap('合同信息')
self.order_detail_main.some_click_item('采购合同/协议号 ')
agreement_code = self.menu.dd.get_value('test_data_info')['agreement']
self.modal.search_and_choose_items(title='选择合同', text=agreement_code)
self.order_detail_main.some_click_item('供应商名称 ')
supplier_code = self.menu.dd.get_value('test_data_info')['supplier']
self.modal.search_and_choose_items(title='选择供应商', text=supplier_code)
# ------
self.order_detail_main.some_click_item('业务员名称 ')
salesman_code = self.menu.dd.get_value('test_data_info')['salesman']
self.modal.search_and_choose_items(title='选择业务员及部门', text=salesman_code)
# ------
log.info('获取采购单号&存储')
self.order_detail_main.choose_tap('主体信息')
self.button.save()
purchase_op_code = ''
while purchase_op_code.startswith('OP') is False:
sleep(1)
purchase_op_code = self.order_detail_main.get_element_text('订单号 ')
self.menu.dd.set_value('purchase_op_code', purchase_op_code)
UtilYaml(self.menu.dd.get_value('extract_path')).write_yaml({'purchase_op_code': purchase_op_code})
self.order_detail_main.some_click_item(name='是否启用开单校验(测试用) ', end_str="div[@class='awsui-component']")
log.info('添加商品')
self.button.click_button(button_name='商品录入')
goods_obj = self.menu.dd.get_value('test_data_info')['goods']
goods_code_list = []
for good in goods_obj:
goods_code_list.append(good[0])
self.modal.search_and_choose_items(placeholder='模糊检索:商品编码,商品名称,规格型号,厂家物料编码', text=goods_code_list)
sleep(5 * len(goods_code_list))
self.order_detail_table.get_cell_text('商品名称', goods_code_list[0])
for good in goods_obj:
good_code = good[0]
good_number = good[1]
self.order_detail_table.input_text('订购数量', good_code, good_number)
self.button.submit()
self.list_page.edit_iframe_is_show()
@allure.step('办理:{}'.format(third_menu))
def purchase_op_transact(self, order_code):
log.info('采购订单办理/审批')
self.purchase_op_search(order_code=order_code, count=1)
self.list_page.open_order('订单号')
self.button.transact()
self.list_page.edit_iframe_is_show()
# -*- coding:utf-8 -*-
# 作者:齐振鋆
# 日期:2023/2/14
# 描述: 组件,我来组成场景用例
rate: 1.25 # 桌面分辨率,设置错误会导致验证码识别失败
element_wait_time: 15 # 元素最大等待时间
# -*- coding:utf-8 -*-
# 作者:齐振鋆
# 日期:2022/9/27
import logging
import os
import shutil
import pytest
from typing import Dict, Tuple
# from unit.public.WindowsUnit import WindowsCommon
from unit.public.DataDic import DataDic
from unit.public.TimeUnit import TimeUnit
from unit.public.YamlUtil import UtilYaml
_test_failed_incremental: Dict[str, Dict[Tuple[int, ...], str]] = {}
root_path = os.getcwd()
dd = DataDic()
tu = TimeUnit()
log = logging.getLogger(__name__)
def pytest_runtest_makereport(item, call):
# 判断用例执行失败后是否需要跳过
if "incremental" in item.keywords:
# 如果用例失败,添加到全局变量中
if call.excinfo is not None:
cls_name = str(item.cls)
parametrize_index = (
tuple(item.callspec.indices.values())
if hasattr(item, "callspec")
else ()
)
test_name = item.originalname or item.name
_test_failed_incremental.setdefault(cls_name, {}).setdefault(
parametrize_index, test_name
)
def pytest_runtest_setup(item):
# 判断用例执行失败后是否需要跳过
if "incremental" in item.keywords:
cls_name = str(item.cls)
# 判断当前用例的类是否在全局变量中
if cls_name in _test_failed_incremental:
parametrize_index = (
tuple(item.callspec.indices.values())
if hasattr(item, "callspec")
else ()
)
test_name = _test_failed_incremental[cls_name].get(parametrize_index, None)
# 如果当前类中的用例存在失败用例,就跳过
if test_name is not None:
pytest.xfail("前置用例失败 ({})".format(test_name))
@pytest.fixture(scope="session", autouse=True)
def init_test():
"""初始化测试"""
log.info('清空校验文件......')
UtilYaml('data/extract.yaml').clean_yaml()
log.info('清空旧截图......')
for item in os.listdir(os.path.join(root_path, 'file', 'screenshot')):
obj = os.path.join(root_path, 'file', 'screenshot', item)
if os.path.isdir(obj) is True and tu.get_date_str() != item:
shutil.rmtree(obj)
@pytest.fixture(scope="session", autouse=True)
def init_params(pytestconfig):
log.info('初始化参数......')
dd.set_value('root_path', root_path)
dd.set_value('screenshot_path', os.path.join(root_path, 'file', 'screenshot', tu.get_date_str()))
dd.set_value('extract_path', os.path.join(root_path, 'data', 'extract.yaml'))
dd.set_value('element_wait_time', UtilYaml('conf.yaml').load_yaml()['element_wait_time'])
# 桌面缩放比例
# rate = WindowsCommon().get_screen_scale_rate()
dd.set_value('rate', UtilYaml('conf.yaml').load_yaml()['rate'])
# -*- coding:utf-8 -*-
# 作者:齐振鋆
# 日期:2022/8/11
- user:
name: test1
pwd:
val: 1
- user:
name: test2
pwd:
val: 2
\ No newline at end of file
"10171873": "0106902284147362 112302281723033110YC230302"
"10184703": "0110603295009902 112204071723092210PU180948"
"10154042": "0110603295012726 112204071732033110PU180948"
"10157849": "0110603295009996 112204071732033110PU180948"
"10157852": "0110603295009995 112204071732033110PU180948"
"10155177": "0106902284157369 112303011732033110AU180948"
\ No newline at end of file
-
company: '00103'
warehouse: '103356'
supplier: '1003207' # 供应商
salesman: '11353403' # 业务员
agreement: '37373' # 合同
goods: # [商品编码,采购数量, 条码]
# - ['10174665', 22]
# - ['10045736', 23] # 灭菌
# - ['10145318', 99] # 冷链
- ['10184703', 20] # 序列号
# - ['10157852', 3] # 灭菌+序列号
# - ['10155177', 20] # 冷链+灭菌+序列号
-
description: 'normal sense' # 场景说明
process_type: 2 # 1:请领单开始,2:借出单开始
company: '00122' # 公司
warehouse_lend: '122302' # 借出仓
warehouse_borrow: '122310' # 借入仓
warehouse_return: '122302' # 还回仓
salesman: '12345678' # 业务员
customer: '1219166' # 客户
agreement: '38618' # 合同
follow: 'N' # 是否连台
goods: # 借出商品
# - 非序列号商品:10174665、10154871、10153570、10155572、10156326、10156327、10156331、10157133
# - 序列号商品:10171873、10184703、10154042、10157849、10157852、10155177
# - '10157133'
# - '10045736'
# - '10184703'
# - '10157852'
- '10155177'
-
company: '00122'
counterman: '888999'
warehouse_lend: '122301'
warehouse_borrow: '122302'
goods:
- '10005528'
\ No newline at end of file
# -*- coding:utf-8 -*-
# 作者:齐振鋆
# 日期:2022/11/8
# 描述:
cd c:\
java -Dwebdriver.chrome.driver="C:\chromedriver.exe" -jar selenium-server-standalone-3.141.0.jar -role node -port 5555 -hub http://10.17.73.97:4444/grid/register/
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment