From 2d0ad3f2a446f15815dddec998dc918c5ebd3c8f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E9=87=91=E6=BB=A1?= Date: Tue, 30 Nov 2021 18:50:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=8E=B7=E5=8F=96baseurl?= =?UTF-8?q?=E5=92=8Cheader?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 000_get_base_datas.robot | 124 ++++++++++++++++++ 000_get_current_datetime.robot | 25 ---- 001_login_get_info/__init__.robot | 1 - 001_login_get_info/login_customer.robot | 48 ++----- 001_login_get_info/login_operate.robot | 14 +- 001_login_get_info/login_operate_psc.robot | 18 +-- 001_login_get_info/login_supplier.robot | 56 ++------ ..._focus.robot => login_supplierfocus.robot} | 53 ++------ .../customer_user_register.robot | 43 ++---- .../supplier_user_register.robot | 45 ++----- ...nting_packaging_factory_open_account.robot | 64 ++------- .../supplier_paper_open_account.robot | 91 ++++--------- .../apply_credit_qniao_customer.robot | 22 +--- 006_get_credit/__init__.robot | 0 006_get_credit/customer_credit_password.robot | 4 - 006_get_credit/customer_get_credit.robot | 4 - .../paper_brand.robot | 9 -- .../paper_category.robot | 8 -- .../paper_manufacturer.robot | 8 -- .../market_information_link.robot | 10 -- 009_product_manage/product_add_and_list.robot | 11 -- .../limited_specialoffer_product.robot | 22 +--- ...oduct_price_config_qniao_and_feisuan.robot | 6 - ...uct_price_batch_update_purchaseprice.robot | 7 - .../customer_get_paper_list_and_detail.robot | 4 - ...customer_enterprise_shipping_address.robot | 4 - ...customer_create_order_credit_payment.robot | 7 +- ...d_supplier_quoted_price_create_order.robot | 16 +-- .../get_oeder_and_receipt_and_delivery.robot | 15 +-- .../customer_bill.robot | 5 - 018_payable_and_receivable/payable.robot | 5 - 018_payable_and_receivable/receivable.robot | 5 - 019_capacity_market/capacity_commodity.robot | 4 - 019_capacity_market/capacity_machines.robot | 4 - 100_test_data_clear.robot | 11 -- datas/000_base.xls | Bin 0 -> 24064 bytes datas/001_login.xls | Bin 0 -> 20992 bytes datas/003_open_account_customer.xls | Bin 0 -> 27136 bytes datas/004_open_account_supplier_paper.xls | Bin 0 -> 28672 bytes datas/005_credit_qniao_customer.xls | Bin 0 -> 18944 bytes datas/006_credit_password.xls | Bin 0 -> 18432 bytes datas/007_paper_variety_management.xls | Bin 0 -> 20992 bytes datas/008_market_information_link.xls | Bin 0 -> 19456 bytes datas/009_product_manage.xls | Bin 0 -> 17920 bytes datas/012_product_price.xls | Bin 0 -> 17920 bytes datas/014_customer_shipping_address.xls | Bin 0 -> 18944 bytes datas/015_customer_create_order.xls | Bin 0 -> 18944 bytes datas/016_customer_enquiry_create_order.xls | Bin 0 -> 21504 bytes datas/017_create_supplier_order_batch.xls | Bin 0 -> 18944 bytes datas/018_payable_receivable.xls | Bin 0 -> 19456 bytes 50 files changed, 242 insertions(+), 531 deletions(-) create mode 100644 000_get_base_datas.robot delete mode 100644 000_get_current_datetime.robot delete mode 100644 001_login_get_info/__init__.robot rename 001_login_get_info/{login_supplier_focus.robot => login_supplierfocus.robot} (61%) delete mode 100644 006_get_credit/__init__.robot create mode 100644 datas/000_base.xls create mode 100644 datas/001_login.xls create mode 100644 datas/003_open_account_customer.xls create mode 100644 datas/004_open_account_supplier_paper.xls create mode 100644 datas/005_credit_qniao_customer.xls create mode 100644 datas/006_credit_password.xls create mode 100644 datas/007_paper_variety_management.xls create mode 100644 datas/008_market_information_link.xls create mode 100644 datas/009_product_manage.xls create mode 100644 datas/012_product_price.xls create mode 100644 datas/014_customer_shipping_address.xls create mode 100644 datas/015_customer_create_order.xls create mode 100644 datas/016_customer_enquiry_create_order.xls create mode 100644 datas/017_create_supplier_order_batch.xls create mode 100644 datas/018_payable_receivable.xls diff --git a/000_get_base_datas.robot b/000_get_base_datas.robot new file mode 100644 index 0000000..a6f965d --- /dev/null +++ b/000_get_base_datas.robot @@ -0,0 +1,124 @@ +*** Settings *** +Test Teardown Run Keyword If Test Failed Fatal Error +Library DateTime +Library ExcelLibrary + +*** Test Cases *** +current_datetime + ${current_time} Get Current Date + ${current_date} Convert Date ${current_time} result_format=%Y-%m-%d + Set Global Variable ${current_date} + ${current_date_month} Convert Date ${current_time} result_format=%Y-%m + Set Global Variable ${current_date_month} + ${current_date_second} Convert Date ${current_time} result_format=%Y-%m-%d %H:%M:%S + Set Global Variable ${current_date_second} + +base_url_header + Open Excel ./datas/000_base.xls + ${uecops} Read Cell Data By Name url B1 + ${yytops} Read Cell Data By Name url B2 + ${pscops} Read Cell Data By Name url B3 + ${pscclient} Read Cell Data By Name url B4 + ${yytclient} Read Cell Data By Name url B5 + ${uecclient} Read Cell Data By Name url B6 + Set Global Variable ${uecops} + Set Global Variable ${yytops} + Set Global Variable ${pscops} + Set Global Variable ${pscclient} + Set Global Variable ${yytclient} + Set Global Variable ${uecclient} + ${cloud_factory_customer_header} Read Cell Data By Name header B1 + ${cloud_factory_supplier_header} Read Cell Data By Name header B2 + ${cloud_factory_supplierfocus_header} Read Cell Data By Name header B3 + ${operation_backend_header} Read Cell Data By Name header B4 + ${operation_psc_header} Read Cell Data By Name header B5 + Set Global Variable ${cloud_factory_customer_header} + Set Global Variable ${cloud_factory_supplier_header} + Set Global Variable ${cloud_factory_supplierfocus_header} + Set Global Variable ${operation_backend_header} + Set Global Variable ${operation_psc_header} + #${cloudfactory_customer_header} Read Cell Data By Name header_token B1 + #${cloudfactory_supplier_header} Read Cell Data By Name header_token B2 + #${cloudfactory_supplierfocus_header} Read Cell Data By Name header_token B3 + #${operationbackend_header} Read Cell Data By Name header_token B4 + #${operationpsc_header} Read Cell Data By Name header_token B5 + #Set Global Variable ${cloudfactory_customer_header} + #Set Global Variable ${cloudfactory_supplier_header} + #Set Global Variable ${cloudfactory_supplierfocus_header} + #Set Global Variable ${operationbackend_header} + #Set Global Variable ${operationpsc_header} + +get_login_datas + #Open Excel ./datas/001_login.xls + #${rows} Get Row Count customer_phone + #FOR ${row} IN RANGE 1 ${rows} + # ${accounttype} Read Cell Data By Coordinates customer_phone 0 ${row} + # ${account} Read Cell Data By Coordinates customer_phone 1 ${row} + # ${captcha} Read Cell Data By Coordinates customer_phone 2 ${row} + #END + Open Excel ./datas/001_login.xls + ${accounttype_customer} Read Cell Data By Name customer_phone A2 + ${account_customer} Read Cell Data By Name customer_phone B2 + ${captcha_customer} Read Cell Data By Name customer_phone C2 + Set Global Variable ${accounttype_customer} + Set Global Variable ${account_customer} + Set Global Variable ${captcha_customer} + ${accounttype_supplier} Read Cell Data By Name supplier_phone A2 + ${account_supplier} Read Cell Data By Name supplier_phone B2 + ${captcha_supplier} Read Cell Data By Name supplier_phone C2 + Set Global Variable ${accounttype_supplier} + Set Global Variable ${account_supplier} + Set Global Variable ${captcha_supplier} + ${accounttype_supplierfocus} Read Cell Data By Name supplier_focus_phone A2 + ${account_supplierfocus} Read Cell Data By Name supplier_focus_phone B2 + ${captcha_supplierfocus} Read Cell Data By Name supplier_focus_phone C2 + Set Global Variable ${accounttype_supplierfocus} + Set Global Variable ${account_supplierfocus} + Set Global Variable ${captcha_supplierfocus} + ${username_operate} Read Cell Data By Name operate_mail A2 + ${password_operate} Read Cell Data By Name operate_mail B2 + Set Global Variable ${username_operate} + Set Global Variable ${password_operate} + ${username_operatepsc} Read Cell Data By Name operate_psc_mail A2 + ${password_operatepsc} Read Cell Data By Name operate_psc_mail B2 + Set Global Variable ${username_operatepsc} + Set Global Variable ${password_operatepsc} + +get_customer_datas + Open Excel ./datas/003_open_account_customer.xls + +get_supplier_datas + Open Excel ./datas/004_open_account_supplier_paper.xls + +get_credit_qniao_customer_datas + Open Excel ./datas/005_credit_qniao_customer.xls + +get_credit_password_datas + Open Excel ./datas/006_credit_password.xls + +get_paper_variety_management_datas + Open Excel ./datas/007_paper_variety_management.xls + +get_market_information_link_datas + Open Excel ./datas/008_market_information_link.xls + +get_product_manage_datas + Open Excel ./datas/009_product_manage.xls + +get_product_price_datas + Open Excel ./datas/012_product_price.xls + +get_customer_shipping_address_datas + Open Excel ./datas/014_customer_shipping_address.xls + +get_customer_create_order_datas + Open Excel ./datas/015_customer_create_order.xls + +get_customer_enquiry_create_order_datas + Open Excel ./datas/016_customer_enquiry_create_order.xls + +get_create_supplier_order_batch_datas + Open Excel ./datas/017_create_supplier_order_batch.xls + +get_payable_receivable_datas + Open Excel ./datas/018_payable_receivable.xls diff --git a/000_get_current_datetime.robot b/000_get_current_datetime.robot deleted file mode 100644 index 8e9f4e8..0000000 --- a/000_get_current_datetime.robot +++ /dev/null @@ -1,25 +0,0 @@ -*** Settings *** -Test Teardown -Library DateTime - -*** Test Cases *** -current_datetime - ${current_time} Get Current Date - log ${current_time} - ${current_date} Convert Date ${current_time} result_format=%Y-%m-%d - log ${current_date} - Set Global Variable ${current_date} - -current_datetime_month - ${current_time} Get Current Date - log ${current_time} - ${current_date_month} Convert Date ${current_time} result_format=%Y-%m - log ${current_date_month} - Set Global Variable ${current_date_month} - -current_datetime_second - ${current_time} Get Current Date - log ${current_time} - ${current_date_second} Convert Date ${current_time} result_format=%Y-%m-%d %H:%M:%S - log ${current_date_second} - Set Global Variable ${current_date_second} diff --git a/001_login_get_info/__init__.robot b/001_login_get_info/__init__.robot deleted file mode 100644 index 930440d..0000000 --- a/001_login_get_info/__init__.robot +++ /dev/null @@ -1 +0,0 @@ -*** Settings *** diff --git a/001_login_get_info/login_customer.robot b/001_login_get_info/login_customer.robot index 45c3c9e..a05e772 100644 --- a/001_login_get_info/login_customer.robot +++ b/001_login_get_info/login_customer.robot @@ -4,72 +4,42 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloud_factory_customer_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 -${uecclient} https://api-client-uec-test.qniao.cn -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** customer_phone - #去除警告 Disable Warnings - #创建会话 会话别名 baseurl headers Create Session uecclient ${uecclient} headers=${cloud_factory_customer_header} - #变量名称 设置用例变量 变量值 ${accounttype} Set Variable 2 #账号类型 1微信 2手机号 3邮箱 4苹果 5自定义账号 ${account} Set Variable 13012345678 ${body} Set Variable {"accountType":${accounttype},"account":"${account}","captcha":"888888"} - #变量接收响应结果 post请求 会话别名 uri 传参 + #${body} Set Variable {"accountType":${accounttype_customer},"account":"${account_customer}","captcha":"${captcha_customer}"} ${response} POST On Session uecclient /uec/authorize/by-captcha ${body} - #日志 - Log ${response.status_code} - #日志 - Log ${response.text} - #日志 Log ${response.json()} - #断言数字 预期结果 实际结果 Should Be Equal As Numbers 200 ${response.status_code} - #断言字符串 预期结果 实际结果 Should Be Equal As Strings successful ${response.json()["message"]} - #变量接收token 获取字典内容 响应结果 token-key ${gettoken_customer} Get From Dictionary ${response.json()["data"]} token - #日志 - log ${gettoken_customer} - #设置token变量 未转业务线 - Set Suite Variable ${gettoken_customer} - #变量接收客户userid 获取字典内容 响应结果 userid-key + Set Global Variable ${gettoken_customer} ${userid_customer} Get From Dictionary ${response.json()["data"]} userId - #日志 - log ${userid_customer} - #设置token变量 - Set Suite Variable ${userid_customer} - #设置带token的请求头 - &{cloudfactorycustomerheader} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${gettoken_customer} - #设置token变量 - Set Suite Variable ${cloudfactorycustomerheader} + Set Global Variable ${userid_customer} + #&{cloudfactory_customer_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${gettoken_customer} + #Set Global Variable ${cloudfactory_customer_header} customer_login_token Disable Warnings - Create Session yytclient ${yytclient} headers=${cloudfactorycustomerheader} + Create Session yytclient ${yytclient} headers=${cloud_factory_customer_header} ${body} Set Variable {"loginToken":"${gettoken_customer}"} ${response} POST On Session yytclient /cloud-print-user-center/authorize/get/product-line-token/by/login-token ${body.encode("utf8")} - Log ${response.status_code} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} #Should Be Equal As Strings successful ${response.json()["message"]} ${get_status} ${token} Run Keyword And Ignore Error Get From Dictionary ${response.json()} data - ${getlogintoken_customer} Set Variable If "${get_status}"=="FAIL" ${gettoken_customer} - ... "${token}"=="None" ${gettoken_customer} ${token} - #全局token + ${getlogintoken_customer} Set Variable If "${get_status}"=="FAIL" ${gettoken_customer} "${token}"=="None" ${gettoken_customer} ${token} Set Global Variable ${getlogintoken_customer} - #&{cloudfactory_customer_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} &{cloudfactory_customer_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} - Set Suite Variable ${cloudfactory_customer_header} + Set Global Variable ${cloudfactory_customer_header} get_customer_userinfo Create Session uecclient ${uecclient} headers=${cloudfactory_customer_header} ${response} Get On Session uecclient /uec/get/user-info - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -79,7 +49,6 @@ get_customer_userinfo get_customer_baseinfo Create Session yytclient ${yytclient} headers=${cloudfactory_customer_header} ${response} Get On Session yytclient cloud-print-user-center/get/base-info - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -88,7 +57,6 @@ get_customer_baseinfo get_customer_useridentity Create Session yytclient ${yytclient} headers=${cloudfactory_customer_header} ${response} Get On Session yytclient cloud-print-user-center/get/user/identity - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/001_login_get_info/login_operate.robot b/001_login_get_info/login_operate.robot index 1b1cab2..41af98a 100644 --- a/001_login_get_info/login_operate.robot +++ b/001_login_get_info/login_operate.robot @@ -4,10 +4,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{operation_backend_header} Content-Type=application/x-www-form-urlencoded X-APP-ID=503258978847952999 -${yytops} https://api-ops-yyt-test.qniao.cn - *** Test Cases *** operate_mail Disable Warnings @@ -15,21 +11,19 @@ operate_mail ${username} Set Variable liangjinman@qniao.cn ${password} Set Variable qn123456 &{body} Create Dictionary username=${username} password=${password} + #&{body} Create Dictionary username=${username_operate} password=${password_operate} ${response} POST On Session yytops /cloud-factory-operation-backend/admin/login ${body} - Log ${response.status_code} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings 登陆成功 ${response.json()["message"]} - ${gettoken_operate} get from Dictionary ${response.headers} Authorization - log ${gettoken_operate} - Set Global Variable ${gettoken_operate} - &{operationbackend_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847952999 Authorization=${gettoken_operate} + ${getlogintoken_operate} get from Dictionary ${response.headers} Authorization + Set Global Variable ${getlogintoken_operate} + &{operationbackend_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847952999 Authorization=${getlogintoken_operate} Set Global Variable ${operationbackend_header} get_operate_userinfo Create Session yytops ${yytops} headers=${operationbackend_header} ${response} Get On Session yytops /cloud-factory-operation-backend/admin/employee/get/login-info - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/001_login_get_info/login_operate_psc.robot b/001_login_get_info/login_operate_psc.robot index 2b13654..f5df47c 100644 --- a/001_login_get_info/login_operate_psc.robot +++ b/001_login_get_info/login_operate_psc.robot @@ -4,32 +4,26 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{operation_psc_header} Content-Type=application/x-www-form-urlencoded X-APP-ID=503258978847965324 -${pscops} https://api-ops-psc-test.qniao.cn - *** Test Cases *** -operate_mail +operate_psc_mail Disable Warnings Create Session pscops ${pscops} headers=${operation_psc_header} ${username} Set Variable liangjinman@qniao.cn ${password} Set Variable qn123456 &{body} Create Dictionary username=${username} password=${password} + #&{body} Create Dictionary username=${username_operatepsc} password=${password_operatepsc} ${response} POST On Session pscops /payment-settlement-center/admin/login ${body} - Log ${response.status_code} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings 登陆成功 ${response.json()["message"]} - ${gettoken_operate_psc} get from Dictionary ${response.headers} Authorization - log ${gettoken_operate_psc} - Set Global Variable ${gettoken_operate_psc} - &{operationpsc_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965324 Authorization=${gettoken_operate_psc} - Set Suite Variable ${operationpsc_header} + ${getlogintoken_operatepsc} get from Dictionary ${response.headers} Authorization + Set Global Variable ${getlogintoken_operatepsc} + &{operationpsc_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965324 Authorization=${getlogintoken_operatepsc} + Set Global Variable ${operationpsc_header} get_operate_userinfo Create Session pscops ${pscops} headers=${operationpsc_header} ${response} Get On Session pscops /payment-settlement-center/admin/employee/get/login-info - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/001_login_get_info/login_supplier.robot b/001_login_get_info/login_supplier.robot index e061973..22d4a5e 100644 --- a/001_login_get_info/login_supplier.robot +++ b/001_login_get_info/login_supplier.robot @@ -4,72 +4,42 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloud_factory_supplier_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 -${uecclient} https://api-client-uec-test.qniao.cn -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** supplier_phone - #去除警告 Disable Warnings - #创建会话 会话别名 baseurl headers Create Session uecclient ${uecclient} headers=${cloud_factory_supplier_header} - #变量名称 设置用例变量 变量值 ${accounttype} Set Variable 2 #账号类型 1微信 2手机号 3邮箱 4苹果 5自定义账号 ${account} Set Variable 13123456789 ${body} Set Variable {"accountType":${accounttype},"account":"${account}","captcha":"888888"} - #变量接收响应结果 post请求 会话别名 uri 传参 + #${body} Set Variable {"accountType":${accounttype_supplier},"account":"${account_supplier}","captcha":"${captcha_supplier}"} ${response} POST On Session uecclient /uec/authorize/by-captcha ${body} - #日志 - Log ${response.status_code} - #日志 - Log ${response.text} - #日志 Log ${response.json()} - #断言数字 预期结果 实际结果 Should Be Equal As Numbers 200 ${response.status_code} - #断言字符串 预期结果 实际结果 Should Be Equal As Strings successful ${response.json()["message"]} - #变量接收token 获取字典内容 响应结果 token-key ${gettoken_supplier} Get From Dictionary ${response.json()["data"]} token - #日志 - log ${gettoken_supplier} - #设置token变量 未转业务线 - Set Suite Variable ${gettoken_supplier} - #变量接收供应商userid 获取字典内容 响应结果 userid-key + Set Global Variable ${gettoken_supplier} ${userid_supplier} Get From Dictionary ${response.json()["data"]} userId - #日志 - log ${userid_supplier} - #设置token变量 - Set Suite Variable ${userid_supplier} - #设置带token的请求头 - &{cloudfactorysupplierheader} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${gettoken_supplier} - #设置token变量 - Set Suite Variable ${cloudfactorysupplierheader} + Set Global Variable ${userid_supplier} + #&{cloudfactory_supplier_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${gettoken_supplier} + #Set Global Variable ${cloudfactory_supplier_header} supplier_login_token Disable Warnings - Create Session yytclient ${yytclient} headers=${cloudfactorysupplierheader} + Create Session yytclient ${yytclient} headers=${cloud_factory_supplier_header} ${body} Set Variable {"loginToken":"${gettoken_supplier}"} ${response} POST On Session yytclient /cloud-print-user-center/authorize/get/product-line-token/by/login-token ${body.encode("utf8")} - Log ${response.status_code} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} #Should Be Equal As Strings successful ${response.json()["message"]} ${get_status} ${token} Run Keyword And Ignore Error Get From Dictionary ${response.json()} data - ${getlogintoken_supplier} Set Variable If "${get_status}"=="FAIL" ${gettoken_supplier} - ... "${token}"=="None" ${gettoken_supplier} ${token} - #全局token + ${getlogintoken_supplier} Set Variable If "${get_status}"=="FAIL" ${gettoken_supplier} "${token}"=="None" ${gettoken_supplier} ${token} Set Global Variable ${getlogintoken_supplier} - #&{cloudfactory_supplierheader} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier} - &{cloudfactory_supplierheader} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${gettoken_supplier} - Set Suite Variable ${cloudfactory_supplierheader} + &{cloudfactory_supplier_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier} + Set Global Variable ${cloudfactory_supplier_header} get_supplier_userinfo - Create Session uecclient ${uecclient} headers=${cloudfactory_supplierheader} + Create Session uecclient ${uecclient} headers=${cloudfactory_supplier_header} ${response} Get On Session uecclient /uec/get/user-info - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -77,18 +47,16 @@ get_supplier_userinfo #Should Be Equal As Integers 0 ${response.json()["data"]["employeeStatus"]} #员工状态 0 启用 1停用 get_supplier_baseinfo - Create Session yytclient ${yytclient} headers=${cloudfactory_supplierheader} + Create Session yytclient ${yytclient} headers=${cloudfactory_supplier_header} ${response} Get On Session yytclient cloud-print-user-center/get/base-info - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} #Should Be Equal As Integers 0 ${response.json()["data"]["employeeStatus"]} #员工状态 0 启用 1停用 get_supplier_useridentity - Create Session yytclient ${yytclient} headers=${cloudfactory_supplierheader} + Create Session yytclient ${yytclient} headers=${cloudfactory_supplier_header} ${response} Get On Session yytclient cloud-print-user-center/get/user/identity - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/001_login_get_info/login_supplier_focus.robot b/001_login_get_info/login_supplierfocus.robot similarity index 61% rename from 001_login_get_info/login_supplier_focus.robot rename to 001_login_get_info/login_supplierfocus.robot index a206b81..9654ab4 100644 --- a/001_login_get_info/login_supplier_focus.robot +++ b/001_login_get_info/login_supplierfocus.robot @@ -4,74 +4,46 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloud_factory_supplier_focus_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847953922 -${uecclient} https://api-client-uec-test.qniao.cn -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** -supplier_focus_phone - #去除警告 +supplierfocus_phone Disable Warnings - #创建会话 会话别名 baseurl headers - Create Session uecclient ${uecclient} headers=${cloud_factory_supplier_focus_header} - #变量名称 设置用例变量 变量值 + Create Session uecclient ${uecclient} headers=${cloud_factory_supplierfocus_header} ${accounttype} Set Variable 2 #账号类型 1微信 2手机号 3邮箱 4苹果 5自定义账号 ${account} Set Variable 13500003333 ${body} Set Variable {"accountType":${accounttype},"account":"${account}","captcha":"888888"} - #变量接收响应结果 post请求 会话别名 uri 传参 + #${body} Set Variable {"accountType":${accounttype_supplierfocus},"account":"${account_supplierfocus}","captcha":"${captcha_supplierfocus}"} ${response} POST On Session uecclient /uec/authorize/by-captcha ${body} - #日志 - Log ${response.status_code} - #日志 - Log ${response.text} - #日志 Log ${response.json()} - #断言数字 预期结果 实际结果 Should Be Equal As Numbers 200 ${response.status_code} - #断言字符串 预期结果 实际结果 Should Be Equal As Strings successful ${response.json()["message"]} - #变量接收token 获取字典内容 响应结果 token-key - ${gettoken_supplier_focus} Get From Dictionary ${response.json()["data"]} token - #日志 - log ${gettoken_supplier_focus} - #设置token变量 未转业务线 - Set Suite Variable ${gettoken_supplier_focus} - #变量接收集采商userid 获取字典内容 响应结果 userid-key + ${gettoken_supplierfocus} Get From Dictionary ${response.json()["data"]} token + Set Global Variable ${gettoken_supplierfocus} ${userid_supplier_focus} Get From Dictionary ${response.json()["data"]} userId - #日志 - log ${userid_supplier_focus} - #设置token变量 - Set Suite Variable ${userid_supplier_focus} - #设置带token的请求头 - &{cloudfactorysupplierfocusheader} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847953922 Authorization=${gettoken_supplier_focus} - #设置token变量 - Set Suite Variable ${cloudfactorysupplierfocusheader} + Set Global Variable ${userid_supplierfocus} + #&{cloud_factory_supplierfocus_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847953922 Authorization=${gettoken_supplier_focus} + #Set Suite Variable ${cloud_factory_supplierfocus_header} supplier_focus_login_token Disable Warnings - Create Session yytclient ${yytclient} headers=${cloudfactorysupplierfocusheader} + Create Session yytclient ${yytclient} headers=${cloud_factory_supplierfocus_header} ${body} Set Variable {"loginToken":"${gettoken_supplier_focus}"} ${response} POST On Session yytclient /cloud-print-user-center/authorize/get/product-line-token/by/login-token ${body.encode("utf8")} - Log ${response.status_code} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} ${getlogintoken_supplier_focus} Get From Dictionary ${response.json()} data log ${getlogintoken_supplier_focus} - #全局token Set Global Variable ${getlogintoken_supplier_focus} - &{cloudfactory_supplierfocus_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier_focus} - Set Suite Variable ${cloudfactory_supplierfocus_header} + &{cloudfactory_supplierfocus_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847953922 Authorization=${getlogintoken_supplier_focus} + Set Global Variable ${cloudfactory_supplierfocus_header} get_supplier_focus_userinfo Create Session uecclient ${uecclient} headers=${cloudfactory_supplierfocus_header} ${response} Get On Session uecclient /uec/get/user-info - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} - Should Be Equal As Integers ${userid_supplier_focus} ${response.json()["data"]["userId"]} + Should Be Equal As Integers ${userid_supplierfocus} ${response.json()["data"]["userId"]} Should Be Equal As Integers 0 ${response.json()["data"]["employeeStatus"]} #员工状态 0 启用 1停用 Should Be Equal As Strings 538701347130839040 ${response.json()["data"]["enterpriseId"]} Should Be Equal As Strings 厦门千纸互联科技有限公司 ${response.json()["data"]["enterpriseName"]} @@ -79,7 +51,6 @@ get_supplier_focus_userinfo get_supplier_focus_baseinfo Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${response} Get On Session yytclient cloud-print-user-center/get/base-info - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/002_user_register/customer_user_register.robot b/002_user_register/customer_user_register.robot index d396fcb..5945617 100644 --- a/002_user_register/customer_user_register.robot +++ b/002_user_register/customer_user_register.robot @@ -5,12 +5,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloud_factory_customer_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 -${uecclient} https://api-client-uec-test.qniao.cn -${yytclient} https://api-client-yyt-test.qniao.cn -${yytops} https://api-ops-yyt-test.qniao.cn - *** Test Cases *** customer_phone_captcha Disable Warnings @@ -18,26 +12,22 @@ customer_phone_captcha ${accounttype} Set Variable 2 #账号类型 1微信 2手机号 3邮箱 4苹果 5自定义账号 ${customer_account} Set Variable 13012345678 ${body} Set Variable {"accountType":${accounttype},"account":"${customer_account}","captcha":"888888"} + #${body} Set Variable {"accountType":${accounttype_customer},"account":"${account_customer}","captcha":"${captcha_customer}"} Set Global Variable ${customer_account} ${response} POST On Session uecclient /uec/authorize/by-captcha ${body} - Log ${response.status_code} - Log ${response.text} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} ${gettoken_customer} Get From Dictionary ${response.json()["data"]} token - log ${gettoken_customer} - Set Suite Variable ${gettoken_customer} + Set Global Variable ${gettoken_customer} ${userid_customer} Get From Dictionary ${response.json()["data"]} userId - log ${userid_customer} - #未转业务线token - Set Suite Variable ${userid_customer} - &{cloudfactorycustomerheader} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${gettoken_customer} - Set Suite Variable ${cloudfactorycustomerheader} + Set Global Variable ${userid_customer} + &{cloudfactory_customer_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${gettoken_customer} + Set Global Variable ${cloudfactory_customer_header} customerclue_customer Disable Warnings - Create Session yytclient ${yytclient} headers=${cloudfactorycustomerheader} + Create Session yytclient ${yytclient} headers=${cloudfactory_customer_header} ${customer_companyname} Set Variable autotest_companyname_customer ${customer_enterprisetype} Set Variable 2 #企业类型 1云印客户 2印刷包装厂 3造纸厂 4打包厂 5原纸供应商 6设备供应商 7其他 ${customer_job} Set Variable autotest_job_customer @@ -48,7 +38,6 @@ customerclue_customer Set Global Variable ${customer_job} Set Global Variable ${customer_name} ${response} POST On Session yytclient /cloud-print-user-center/save/customerclue ${body.encode("utf8")} - Log ${response.status_code} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -56,24 +45,21 @@ customerclue_customer customer_login_token Disable Warnings - Create Session yytclient ${yytclient} headers=${cloudfactorycustomerheader} + Create Session yytclient ${yytclient} headers=${cloud_factory_customer_header} ${body} Set Variable {"loginToken":"${gettoken_customer}"} ${response} POST On Session yytclient /cloud-print-user-center/authorize/get/product-line-token/by/login-token ${body.encode("utf8")} - Log ${response.status_code} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} - Should Be Equal As Strings successful ${response.json()["message"]} - ${getlogintoken_customer} Get From Dictionary ${response.json()} data - log ${getlogintoken_customer} - #全局token + #Should Be Equal As Strings successful ${response.json()["message"]} + ${get_status} ${token} Run Keyword And Ignore Error Get From Dictionary ${response.json()} data + ${getlogintoken_customer} Set Variable If "${get_status}"=="FAIL" ${gettoken_customer} "${token}"=="None" ${gettoken_customer} ${token} Set Global Variable ${getlogintoken_customer} &{cloudfactory_customer_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} - Set Suite Variable ${cloudfactory_customer_header} + Set Global Variable ${cloudfactory_customer_header} get_customerclue_customer Create Session yytclient ${yytclient} headers=${cloudfactory_customer_header} ${response} Get On Session yytclient /cloud-print-user-center/get/my/customerclue - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -86,7 +72,6 @@ get_customerclue_customer customerclue_verify_have_join_customer Create Session yytclient ${yytclient} headers=${cloudfactory_customer_header} ${response} POST On Session yytclient /cloud-print-user-center/verify/have-join-and-fill - Log ${response.status_code} log ${response.json()} Should Be Equal As Strings False ${response.json()["data"]} #是否加入企业 False未加入 True已加入 @@ -99,7 +84,6 @@ customerclue_uploadpictures_customer ${customerclue_type} Set Variable 1 #线索类型 1企业认证 2授信申请 ${body} Set Variable {"businessLicense": "${customer_businesslicense}","idCardBack": "${customer_idcardback}","idCardFront": "${customer_idcardfront}","type": ${customerclue_type}} ${response} POST On Session yytclient /cloud-print-user-center/customerclue/upload-pictures ${body.encode("utf8")} - Log ${response.status_code} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -107,7 +91,6 @@ customerclue_uploadpictures_customer operate_get_user_register_list Create Session yytops ${yytops} headers=${operationbackend_header} ${response} Get On Session yytops /cloud-print-user-center/admin/user/get/user-list - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -117,7 +100,6 @@ operate_get_user_register_search Create Session yytops ${yytops} headers=${operationbackend_header} ${param} Set Variable mobile=${customer_account} ${response} Get On Session yytops /cloud-print-user-center/admin/user/get/user-list params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -126,7 +108,6 @@ operate_get_user_register_search operate_get_customerclue_list Create Session yytops ${yytops} headers=${operationbackend_header} ${response} Get On Session yytops /cloud-print-user-center/admin/get/customerclue/page - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -141,7 +122,6 @@ operate_get_customerclue_search Create Session yytops ${yytops} headers=${operationbackend_header} ${param} Set Variable status=1 #客户线索状态 1待处理 2已处理 ${response} Get On Session yytops /cloud-print-user-center/admin/get/customerclue/page params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -159,7 +139,6 @@ operate_handle_customerclue ${customerclue_remark} Set Variable autotest_customerclue_remark ${body} Set Variable {"id":"${customerclue_id}","adminId":"${operate_adminid}","name":"${operate_adminname}","remark":"${customerclue_remark}"} ${response} POST On Session yytops /cloud-print-user-center/admin/handle/customerclue ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/002_user_register/supplier_user_register.robot b/002_user_register/supplier_user_register.robot index 9ef9c58..0608be8 100644 --- a/002_user_register/supplier_user_register.robot +++ b/002_user_register/supplier_user_register.robot @@ -5,12 +5,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloud_factory_supplier_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 -${uecclient} https://api-client-uec-test.qniao.cn -${yytclient} https://api-client-yyt-test.qniao.cn -${yytops} https://api-ops-yyt-test.qniao.cn - *** Test Cases *** supplier_phone_captcha Disable Warnings @@ -18,26 +12,22 @@ supplier_phone_captcha ${accounttype} Set Variable 2 #账号类型 1微信 2手机号 3邮箱 4苹果 5自定义账号 ${supplier_account} Set Variable 13123456789 ${body} Set Variable {"accountType":${accounttype},"account":"${supplier_account}","captcha":"888888"} + #${body} Set Variable {"accountType":${accounttype_supplier},"account":"${account_supplier}","captcha":"${captcha_supplier}"} Set Global Variable ${supplier_account} ${response} POST On Session uecclient /uec/authorize/by-captcha ${body} - Log ${response.status_code} - Log ${response.text} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} ${gettoken_supplier} Get From Dictionary ${response.json()["data"]} token - log ${gettoken_supplier} - Set Suite Variable ${gettoken_supplier} + Set Global Variable ${gettoken_supplier} ${userid_supplier} Get From Dictionary ${response.json()["data"]} userId - log ${userid_supplier} - #未转业务线token - Set Suite Variable ${userid_supplier} - &{cloudfactorysupplierheader} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${gettoken_supplier} - Set Suite Variable ${cloudfactorysupplierheader} + Set Global Variable ${userid_supplier} + &{cloudfactory_supplier_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${gettoken_supplier} + Set Global Variable ${cloudfactory_supplier_header} customerclue_supplier Disable Warnings - Create Session yytclient ${yytclient} headers=${cloudfactorysupplierheader} + Create Session yytclient ${yytclient} headers=${cloudfactory_supplier_header} ${supplier_companyname} Set Variable autotest_companyname_supplier ${supplier_enterprisetype} Set Variable 5 #企业类型 1云印客户 2印刷包装厂 3造纸厂 4打包厂 5原纸供应商 6设备供应商 7其他 ${supplier_job} Set Variable autotest_job_supplier @@ -48,7 +38,6 @@ customerclue_supplier Set Global Variable ${supplier_job} Set Global Variable ${supplier_name} ${response} POST On Session yytclient /cloud-print-user-center/save/customerclue ${body.encode("utf8")} - Log ${response.status_code} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -56,24 +45,21 @@ customerclue_supplier supplier_login_token Disable Warnings - Create Session yytclient ${yytclient} headers=${cloudfactorysupplierheader} + Create Session yytclient ${yytclient} headers=${cloud_factory_supplier_header} ${body} Set Variable {"loginToken":"${gettoken_supplier}"} ${response} POST On Session yytclient /cloud-print-user-center/authorize/get/product-line-token/by/login-token ${body.encode("utf8")} - Log ${response.status_code} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} - Should Be Equal As Strings successful ${response.json()["message"]} - ${getlogintoken_supplier} Get From Dictionary ${response.json()} data - log ${getlogintoken_supplier} - #全局token + #Should Be Equal As Strings successful ${response.json()["message"]} + ${get_status} ${token} Run Keyword And Ignore Error Get From Dictionary ${response.json()} data + ${getlogintoken_supplier} Set Variable If "${get_status}"=="FAIL" ${gettoken_supplier} "${token}"=="None" ${gettoken_supplier} ${token} Set Global Variable ${getlogintoken_supplier} - &{cloudfactory_supplier_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_supplier} - Set Suite Variable ${cloudfactory_supplier_header} + &{cloudfactory_supplier_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier} + Set Global Variable ${cloudfactory_supplier_header} get_customerclue_supplier Create Session yytclient ${yytclient} headers=${cloudfactory_supplier_header} ${response} Get On Session yytclient /cloud-print-user-center/get/my/customerclue - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -86,7 +72,6 @@ get_customerclue_supplier customerclue_verify_have_join_supplier Create Session yytclient ${yytclient} headers=${cloudfactory_supplier_header} ${response} POST On Session yytclient /cloud-print-user-center/verify/have-join-and-fill - Log ${response.status_code} log ${response.json()} Should Be Equal As Strings False ${response.json()["data"]} #是否加入企业 False未加入 True已加入 @@ -99,7 +84,6 @@ customerclue_uploadpictures_supplier ${customerclue_type} Set Variable 1 #线索类型 1企业认证 2授信申请 ${body} Set Variable {"businessLicense": "${supplier_businesslicense}","idCardBack": "${supplier_idcardback}","idCardFront": "${supplier_idcardfront}","type": ${customerclue_type}} ${response} POST On Session yytclient /cloud-print-user-center/customerclue/upload-pictures ${body.encode("utf8")} - Log ${response.status_code} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -107,7 +91,6 @@ customerclue_uploadpictures_supplier operate_get_user_register_list Create Session yytops ${yytops} headers=${operationbackend_header} ${response} Get On Session yytops /cloud-print-user-center/admin/user/get/user-list - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -116,7 +99,6 @@ operate_get_user_register_search Create Session yytops ${yytops} headers=${operationbackend_header} ${param} Set Variable mobile=${supplier_account} ${response} Get On Session yytops /cloud-print-user-center/admin/user/get/user-list params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -125,7 +107,6 @@ operate_get_user_register_search operate_get_customerclue_list Create Session yytops ${yytops} headers=${operationbackend_header} ${response} Get On Session yytops /cloud-print-user-center/admin/get/customerclue/page - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -140,7 +121,6 @@ operate_get_customerclue_search Create Session yytops ${yytops} headers=${operationbackend_header} ${param} Set Variable status=1 #客户线索状态 1待处理 2已处理 ${response} Get On Session yytops /cloud-print-user-center/admin/get/customerclue/page params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -158,7 +138,6 @@ operate_handle_customerclue ${customerclue_remark} Set Variable autotest_customerclue_remark ${body} Set Variable {"id":"${customerclue_id}","adminId":"${operate_adminid}","name":"${operate_adminname}","remark":"${customerclue_remark}"} ${response} POST On Session yytops /cloud-print-user-center/admin/handle/customerclue ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/003_enterprise_open_account_customer/printing_packaging_factory_open_account.robot b/003_enterprise_open_account_customer/printing_packaging_factory_open_account.robot index 72ff6be..a3d5470 100644 --- a/003_enterprise_open_account_customer/printing_packaging_factory_open_account.robot +++ b/003_enterprise_open_account_customer/printing_packaging_factory_open_account.robot @@ -4,14 +4,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{operation_backend_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847952999 Authorization=${gettoken_operate} -&{cloud_factory_customer_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 -${uecclient} https://api-client-uec-test.qniao.cn -${yytclient} https://api-client-yyt-test.qniao.cn -${yytops} https://api-ops-yyt-test.qniao.cn -${uecops} https://api-ops-uec-test.qniao.cn - *** Test Cases *** operate_open_account_printing_packaging_factory Disable Warnings @@ -37,7 +29,6 @@ operate_open_account_printing_packaging_factory Set Global Variable ${printing_packaging_factory_legalpersonname} Set Global Variable ${printing_packaging_factory_legalpersonidcardno} ${response} POST On Session yytops /cloud-print-user-center/admin/save/enterprise ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -46,7 +37,6 @@ operate_open_account_printing_packaging_factory operate_get_printing_packaging_factory_list Create Session yytops ${yytops} headers=${operationbackend_header} ${response} Get On Session yytops /cloud-print-user-center/admin/get/packaging-printing-mill-list - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -58,7 +48,6 @@ operate_get_printing_packaging_factory_search Create Session yytops ${yytops} headers=${operationbackend_header} ${param} Set Variable name=${printing_packaging_factory_name} ${response} Get On Session yytops /cloud-print-user-center/admin/get/packaging-printing-mill-list params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -72,7 +61,6 @@ operate_get_printing_packaging_factory_modify_state Create Session uecops ${uecops} headers=${operationbackend_header} ${body} Set Variable {"enterpriseId":"${printing_packaging_factory_id}","status":1} #状态 0启用 1禁用 ${response} POST On Session uecops /uec/admin/modify/enterprise/state ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -100,7 +88,6 @@ operate_get_printing_packaging_factory_modify_state # ${printing_packaging_factory_legalPersonIdCardFront} Set Variable https://qncloudprintfiletest.oss-cn-shenzhen.aliyuncs.com/cloudprint/1632378545847.jpg # ${body} Set Variable {"id":"${printing_packaging_factory_id}","enterpriseId":"${printing_packaging_factory_id}","status":0,"legalPersonIdCardFrontImg":"${printing_packaging_factory_legalPersonIdCardFront}","legalPersonIdCardFrontImgs":["${printing_packaging_factory_legalPersonIdCardFront}"],"legalPersonIdCardBackImg":"${printing_packaging_factory_legalPersonIdCardBack}","legalPersonIdCardBackImgs":["${printing_packaging_factory_legalPersonIdCardBack}"],"businessLicenseImg":"${printing_packaging_factory_businessLicense}","businessLicenseImgs":["${printing_packaging_factory_businessLicense}"],"legalPersonMobile":"${printing_packaging_factory_legalpersonmobile}","registeredCapital":999,"name":"${printing_packaging_factory_name}","type":${printing_packaging_factory_type},"shortName":"${printing_packaging_factory_shortname}","uniformSocialCreditCode":"${printing_packaging_factory_uniformsocialcreditcode}","locDetail":"${printing_packaging_factory_locdetail}","legalPersonName":"${printing_packaging_factory_legalpersonname}","legalPersonIdCardNo":"${printing_packaging_factory_legalpersonidcardno}","locProvinceId":${printing_packaging_factory_locprovinceid},"locCityId":${printing_packaging_factory_loccityid},"locDistrictId":${printing_packaging_factory_locdistrictid},"locStreetId":${printing_packaging_factory_locstreetid},"locProvinceName":"${printing_packaging_factory_locprovincename}","locCityName":"${printing_packaging_factory_loccityname}","locDistrictName":"${printing_packaging_factory_locdistrictname}","locStreetName":"${printing_packaging_factory_locstreetname}"} # ${response} POST On Session uecops /uec/admin/save/enterprise2 ${body.encode("utf8")} - # Log ${response.status_code} # log ${response.json()} # Should Be Equal As Numbers 200 ${response.status_code} # Should Be Equal As Strings successful ${response.json()["message"]} @@ -130,7 +117,6 @@ operate_save_printing_packaging_factory_base_info ${printing_packaging_factory_legalPersonIdCardFront} Set Variable https://qncloudprintfiletest.oss-cn-shenzhen.aliyuncs.com/cloudprint/1632378545847.jpg ${body} Set Variable {"enterpriseId":"${printing_packaging_factory_id}","id":"${printing_packaging_factory_id}","createTime":"${current_date_second}","updateTime":"${current_date_second}","name":"${printing_packaging_factory_name}","uniformSocialCreditCode":"${printing_packaging_factory_uniformsocialcreditcode}","locProvinceId":${printing_packaging_factory_locprovinceid},"locProvinceName":"${printing_packaging_factory_locprovincename}","locCityId":${printing_packaging_factory_loccityid},"locCityName":"${printing_packaging_factory_loccityname}","locDistrictId":${printing_packaging_factory_locdistrictid},"locDistrictName":"${printing_packaging_factory_locdistrictname}","locStreetId":${printing_packaging_factory_locstreetid},"locStreetName":"${printing_packaging_factory_locstreetname}","locDetail":"${printing_packaging_factory_locdetail}","legalPersonName":"${printing_packaging_factory_legalpersonname}","legalPersonIdCardNo":"${printing_packaging_factory_legalpersonidcardno}","legalPersonMobile":"${printing_packaging_factory_legalpersonmobile}","type":${printing_packaging_factory_type},"shortName":"${printing_packaging_factory_shortname}","registeredCapital":999,"incomeInPastTwoYears":100,"regAddrLongitude":null,"regAddrLatitude":null,"birthday":"${current_date}","cooperationTime":"${current_date_month}","legalPersonIdCardFrontImg":"${printing_packaging_factory_legalPersonIdCardFront}","legalPersonIdCardBackImg":null,"businessLicenseImg":"${printing_packaging_factory_businessLicense}"} ${response} POST On Session yytops /cloud-print-user-center/admin/save/packaging-printing-mill/base-info ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -148,13 +134,11 @@ operate_save_printing_packaging_factory_baseinfo_factory_related_information ${printing_packaging_factory_loccityname} Set Variable 广州市 ${printing_packaging_factory_locdistrictname} Set Variable 天河区 ${printing_packaging_factory_locstreetname} Set Variable 车陂街道 - ${printing_packaging_factory_legalpersonmobile} Set Variable 13800138000 ${printing_packaging_factory_factoryphotos} Set Variable https://qncloudprintfiletest.oss-cn-shenzhen.aliyuncs.com/cloudprint/1632378545847.jpg ${printing_packaging_factory_leasecontract} Set Variable https://qncloudprintfiletest.oss-cn-shenzhen.aliyuncs.com/cloudprint/1632378545847.jpg ${printing_packaging_factory_mainproducts} Set Variable autotest_mainproducts ${body} Set Variable {"enterpriseId":"${printing_packaging_factory_id}","leaseContractImg":"${printing_packaging_factory_leasecontract}","factoryPhotos":"${printing_packaging_factory_factoryphotos}","mainProducts":"${printing_packaging_factory_mainproducts}","businessAnnualVolume":"9990000","locLatitude":"23.119958","locLongitude":"113.406448","locDetail":"${printing_packaging_factory_locdetail}","legalPersonName":"${printing_packaging_factory_legalpersonname}","locProvinceId":${printing_packaging_factory_locprovinceid},"locCityId":${printing_packaging_factory_loccityid},"locDistrictId":${printing_packaging_factory_locdistrictid},"locStreetId":${printing_packaging_factory_locstreetid},"locProvinceName":"${printing_packaging_factory_locprovincename}","locCityName":"${printing_packaging_factory_loccityname}","locDistrictName":"${printing_packaging_factory_locdistrictname}","locStreetName":"${printing_packaging_factory_locstreetname}"} ${response} POST On Session yytops /cloud-print-user-center/admin/save/factory ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -176,7 +160,6 @@ operate_save_printing_packaging_factory_baseinfo_enterprise_shipping_addresses ${printing_packaging_factory_receivermobile} Set Variable 13800138000 ${body} Set Variable {"enterpriseId":"${printing_packaging_factory_id}","receiverMobile":"${printing_packaging_factory_receivermobile}","receiver":"${printing_packaging_factory_receiver}","receiveEnterpriseName":"${printing_packaging_factory_name}","enterpriseShippingAddressList":[{"detail":"${printing_packaging_factory_detail}","provinceId":${printing_packaging_factory_provinceid},"cityId":${printing_packaging_factory_cityid},"districtId":${printing_packaging_factory_districtid},"streetId":${printing_packaging_factory_streetid},"provinceName":"${printing_packaging_factory_provincename}","cityName":"${printing_packaging_factory_cityname}","districtName":"${printing_packaging_factory_districtname}","streetName":"${printing_packaging_factory_streetname}"}]} ${response} POST On Session uecops /uec/admin/save/enterprise-shipping-addresses ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -187,7 +170,6 @@ operate_save_printing_packaging_factory_settlementaccountinfo_enterprise_scrappa Create Session yytops ${yytops} headers=${operationbackend_header} ${body} Set Variable {"enterpriseId":"${printing_packaging_factory_id}","deposit":990000,"earnest":900000,"totalUsed":90000} ${response} POST On Session yytops /cloud-print-user-center/admin/save/enterprise-scrap-paper-credit ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -201,7 +183,6 @@ operate_save_printing_packaging_factory_settlementaccountinfo_enterprise_private ${printing_packaging_factory_openingbank} Set Variable autotest_openingbank ${body} Set Variable {"enterpriseId":"${printing_packaging_factory_id}","list":[{"cardholderName":"${printing_packaging_factory_cardholdername}","bankCardNumber":"${printing_packaging_factory_bankcardnumber}","openingBank":"${printing_packaging_factory_openingbank}"}]} ${response} POST On Session uecops /uec/admin/save/enterprise/private-account ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -214,7 +195,6 @@ operate_save_printing_packaging_factory_settlementaccountinfo_enterprise_paperee ${printing_packaging_factory_accountid} Set Variable autotest_accountid ${body} Set Variable {"enterpriseId":"${printing_packaging_factory_id}","enterprisePaperExternalSettlementAccountList":[{"type":"${printing_packaging_factory_type}","accountId":"${printing_packaging_factory_accountid}","balance":990000,"total":990000}]} ${response} POST On Session yytops /cloud-print-user-center/admin/save/enterprise-papere-external-settlement-accounts ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -230,7 +210,6 @@ operate_save_printing_packaging_factory_employee_list_add_enterprise_administrat ${response} POST On Session yytops /cloud-print-user-center/admin/add/enterprise-administrator ${body.encode("utf8")} Set Suite Variable ${printing_packaging_factory_administrator_mobile} Set Suite Variable ${printing_packaging_factory_administrator_realname} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -243,7 +222,6 @@ operate_save_printing_packaging_factory_employee_list_add_employee ${printing_packaging_factory_realname} Set Variable autotest_employee ${body} Set Variable {"enterpriseId":"${printing_packaging_factory_id}","position":"${printing_packaging_factory_position}","realName":"${printing_packaging_factory_realname}"} ${response} POST On Session uecops /uec/admin/add/employee ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -252,7 +230,6 @@ operate_save_printing_packaging_factory_employee_list_add_employee operate_get_printing_packaging_factory_baseinfo Create Session yytops ${yytops} headers=${operationbackend_header} ${response} Get On Session yytops /cloud-print-user-center/admin/get/packaging-printing-mill/base-info/${printing_packaging_factory_id} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -263,7 +240,6 @@ operate_get_printing_packaging_factory_baseinfo operate_get_printing_packaging_factory_settlementaccountinfo Create Session yytops ${yytops} headers=${operationbackend_header} ${response} Get On Session yytops /cloud-print-user-center/admin/get/packaging-printing-mill/settlement-account-info/${printing_packaging_factory_id} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -272,7 +248,6 @@ operate_get_printing_packaging_factory_employee_list Create Session uecops ${uecops} headers=${operationbackend_header} ${param} Set Variable enterpriseId=${printing_packaging_factory_id} ${response} Get On Session uecops /uec/admin/get/employee-list params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -280,55 +255,32 @@ operate_get_printing_packaging_factory_employee_list Should Be Equal As Strings ${printing_packaging_factory_administrator_realname} ${response.json()["data"]["records"][0]["realName"]} customer_phone - #去除警告 Disable Warnings - #创建会话 会话别名 baseurl headers Create Session uecclient ${uecclient} headers=${cloud_factory_customer_header} - #变量名称 设置用例变量 变量值 ${accounttype} Set Variable 2 #账号类型 1微信 2手机号 3邮箱 4苹果 5自定义账号 ${account} Set Variable 13012345678 ${body} Set Variable {"accountType":${accounttype},"account":"${account}","captcha":"888888"} - #变量接收响应结果 post请求 会话别名 uri 传参 ${response} POST On Session uecclient /uec/authorize/by-captcha ${body} - #日志 - Log ${response.status_code} - #日志 - Log ${response.text} - #日志 Log ${response.json()} - #断言数字 预期结果 实际结果 Should Be Equal As Numbers 200 ${response.status_code} - #断言字符串 预期结果 实际结果 Should Be Equal As Strings successful ${response.json()["message"]} - #变量接收token 获取字典内容 响应结果 token-key ${gettoken_customer} Get From Dictionary ${response.json()["data"]} token - #日志 - log ${gettoken_customer} - #设置token变量 未转业务线 - Set Suite Variable ${gettoken_customer} - #变量接收客户userid 获取字典内容 响应结果 userid-key + Set Global Variable ${gettoken_customer} ${userid_customer} Get From Dictionary ${response.json()["data"]} userId - #日志 - log ${userid_customer} - #设置token变量 - Set Suite Variable ${userid_customer} - #设置带token的请求头 - &{cloudfactorycustomerheader} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${gettoken_customer} - #设置token变量 - Set Suite Variable ${cloudfactorycustomerheader} + Set Global Variable ${userid_customer} + #&{cloudfactory_customer_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${gettoken_customer} + #Set Global Variable ${cloudfactory_customer_header} customer_login_token Disable Warnings - Create Session yytclient ${yytclient} headers=${cloudfactorycustomerheader} + Create Session yytclient ${yytclient} headers=${cloud_factory_customer_header} ${body} Set Variable {"loginToken":"${gettoken_customer}"} ${response} POST On Session yytclient /cloud-print-user-center/authorize/get/product-line-token/by/login-token ${body.encode("utf8")} - Log ${response.status_code} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} - Should Be Equal As Strings successful ${response.json()["message"]} - ${getlogintoken_customer} Get From Dictionary ${response.json()} data - log ${getlogintoken_customer} - #全局token + #Should Be Equal As Strings successful ${response.json()["message"]} + ${get_status} ${token} Run Keyword And Ignore Error Get From Dictionary ${response.json()} data + ${getlogintoken_customer} Set Variable If "${get_status}"=="FAIL" ${gettoken_customer} "${token}"=="None" ${gettoken_customer} ${token} Set Global Variable ${getlogintoken_customer} &{cloudfactory_customer_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} Set Global Variable ${cloudfactory_customer_header} diff --git a/004_enterprise_open_account_supplier/supplier_paper_open_account.robot b/004_enterprise_open_account_supplier/supplier_paper_open_account.robot index 12bbe14..34dfc31 100644 --- a/004_enterprise_open_account_supplier/supplier_paper_open_account.robot +++ b/004_enterprise_open_account_supplier/supplier_paper_open_account.robot @@ -4,20 +4,12 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_supplierfocus_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier_focus} -&{operation_backend_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847952999 Authorization=${gettoken_operate} -&{cloud_factory_supplier_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 -${uecclient} https://api-client-uec-test.qniao.cn -${yytclient} https://api-client-yyt-test.qniao.cn -${uecops} https://api-ops-uec-test.qniao.cn -${yytops} https://api-ops-yyt-test.qniao.cn - *** Test Cases *** operate_save_virtual_supplier Disable Warnings - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${virtual_supplier_name} Set Variable autotest_supplier_paper_name + ${virtual_supplier_shortName} Set Variable autotest_supplier_shortName ${virtual_supplier_details} Set Variable autotest_supplier_paper_details ${virtual_supplier_contactname} Set Variable autotest_supplier_paper_contactname ${virtual_supplier_contactmoblie} Set Variable 13800138000 @@ -29,10 +21,9 @@ operate_save_virtual_supplier ${virtual_supplier_cityname} Set Variable 广州市 ${virtual_supplier_districtname} Set Variable 天河区 ${virtual_supplier_streetname} Set Variable 车陂街道 - ${body} Set Variable {"name":"${virtual_supplier_name}","details":"${virtual_supplier_details}","contactName":"${virtual_supplier_contactname}","contactMoblie":"${virtual_supplier_contactmoblie}","provinceName":"${virtual_supplier_provincename}","cityName":"${virtual_supplier_cityname}","districtName":"${virtual_supplier_districtname}","streetName":"${virtual_supplier_streetname}","provinceId":${virtual_supplier_provinceid},"cityId":${virtual_supplier_cityid},"districtId":${virtual_supplier_districtid},"streetId":${virtual_supplier_streetid}} + ${body} Set Variable {"name":"${virtual_supplier_name}","shortName":"${virtual_supplier_shortName}","details":"${virtual_supplier_details}","contactName":"${virtual_supplier_contactname}","contactMoblie":"${virtual_supplier_contactmoblie}","provinceName":"${virtual_supplier_provincename}","cityName":"${virtual_supplier_cityname}","districtName":"${virtual_supplier_districtname}","streetName":"${virtual_supplier_streetname}","provinceId":${virtual_supplier_provinceid},"cityId":${virtual_supplier_cityid},"districtId":${virtual_supplier_districtid},"streetId":${virtual_supplier_streetid}} Set Suite Variable ${virtual_supplier_name} ${response} POST On Session yytops /cloud-print-user-center/admin/supplier/directsalestore/virtual-supplier/save ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -40,9 +31,8 @@ operate_save_virtual_supplier sleep 1 operate_get_virtual_supplier_list - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${response} Get On Session yytops /trading-center/admin/supplier/directsalestore/virtual-supplier/page - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -53,15 +43,14 @@ operate_update_virtual_supplier_status Create Session yytops ${yytops} headers=${operation_backend_header} ${body} Set Variable {"id":"${supplier_paper_id}","status":1} #虚拟供应商状态 0禁用 1启用 ${response} POST On Session yytops /cloud-print-user-center/admin/supplier/directsalestore/virtual-supplier/updatestatus ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} operate_create_enterprise_with_supplier_paper - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${supplier_paper_name} Set Variable autotest_supplier_paper_name - ${supplier_paper_type} Set Variable 2 #企业类型 1云印客户 2印刷包装厂 3造纸厂 4打包厂 5原纸供应商 6设备供应商 7其他 + ${supplier_paper_type} Set Variable 5 #企业类型 1云印客户 2印刷包装厂 3造纸厂 4打包厂 5原纸供应商 6设备供应商 7其他 ${supplier_paper_uniformSocialCreditCode} Set Variable autotest91440101MA59F2J10M ${supplier_paper_legalPersonName} Set Variable autotest_legalperson ${supplier_paper_legalPersonIdCardNo} Set Variable autotest_legalpersonidcardno @@ -88,14 +77,13 @@ operate_create_enterprise_with_supplier_paper ${body} Set Variable {"supplierId":"${supplier_paper_id}","enterprise":{"name":"${supplier_paper_name}","locDetail":"${supplier_paper_locDetail}","type":${supplier_paper_type},"uniformSocialCreditCode":"${supplier_paper_uniformSocialCreditCode}","legalPersonIdCardNo":"${supplier_paper_legalPersonIdCardNo}","legalPersonName":"${supplier_paper_legalPersonName}","paperSettlementIntervalTypeId":"${supplier_paper_paperSettlementIntervalTypeId}","locProvinceId":${supplier_paper_locProvinceId},"locCityId":${supplier_paper_locCityId},"locDistrictId":${supplier_paper_locDistrictId},"locStreetId":${supplier_paper_locStreetId},"legalPersonIdCardFrontImg":"${supplier_paper_legalPersonIdCardFrontImg}","legalPersonIdCardBackImg":"${supplier_paper_legalPersonIdCardBackImg}","businessLicenseImg":"${supplier_paper_businessLicenseImg}"},"enterpriseContacts":{"name":"${supplier_paper_contactsname}","mobilePhone":"${supplier_paper_mobilePhone}","telephone":"${supplier_paper_telephone}","email":"${supplier_paper_email}","wechatAccount":"${supplier_paper_wechatAccount}","remark":"${supplier_paper_remark}"},"enterpriseCorporateAccount":{"bankAccountName":"${supplier_paper_bankAccountName}","bankAccount":"${supplier_paper_bankAccount}","bankName":"${supplier_paper_bankName}","accountOpeningBranch":"${supplier_paper_accountOpeningBranch}","locationBank":"${supplier_paper_locationBank}"}} ${response} POST On Session yytops /cloud-print-user-center/admin/create/enterprise/with/supplier ${body.encode("utf8")} Set Global Variable ${supplier_paper_name} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} sleep 1 operate_get_virtual_supplier_search - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${param} Set Variable name=${virtual_supplier_name} ${response} Get On Session yytops /trading-center/admin/supplier/directsalestore/virtual-supplier/page params=${param} Log ${response.status_code} @@ -106,7 +94,7 @@ operate_get_virtual_supplier_search Set Global Variable ${supplier_enterprise_id} operate_supplier_paper_save_base_info - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${supplier_paper_name} Set Variable autotest_supplier_paper_name ${supplier_paper_shortName} Set Variable autotest_shortName ${supplier_paper_type} Set Variable 5 #企业类型 1云印客户 2印刷包装厂 3造纸厂 4打包厂 5原纸供应商 6设备供应商 7其他 @@ -136,7 +124,7 @@ operate_supplier_paper_save_base_info operate_supplier_paper_save_main_products Disable Warnings - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${body} Set Variable {"enterpriseId":"${supplier_enterprise_id}","mainCategoryBrandId":"599233095564136448","mainCategoryId":"638458876659896320","mainProducts":"638458876659896320"} ${response} POST On Session yytops /cloud-print-user-center/admin/save/supplier/main-products ${body.encode("utf8")} log ${response.json()} @@ -146,7 +134,7 @@ operate_supplier_paper_save_main_products operate_supplier_paper_save_factory_list Disable Warnings - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${supplier_factory_locProvinceId} Set Variable 440000 ${supplier_factory_locCityId} Set Variable 440100 ${supplier_factory_locDistrictId} Set Variable 440106 @@ -167,7 +155,7 @@ operate_supplier_paper_save_factory_list operate_supplier_paper_save_private_account Disable Warnings - Create Session uecops ${uecops} headers=${operation_backend_header} + Create Session uecops ${uecops} headers=${operationbackend_header} ${supplier_private_account_cardholderName} Set Variable autotest_cardholder ${supplier_private_account_bankCardNumber} Set Variable autotest_bankCardNumber ${supplier_private_account_openingBank} Set Variable autotest_openingBank @@ -180,7 +168,7 @@ operate_supplier_paper_save_private_account operate_supplier_paper_add_pc_machine Disable Warnings - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${supplier_machine_name} Set Variable autotest_supplier_machine_name ${supplier_machineType} Set Variable 10 ${body} Set Variable {"enterpriseId":"${supplier_enterprise_id}","id":null,"name":"${supplier_machine_name}","machineType":"${supplier_machineType}"} @@ -192,7 +180,7 @@ operate_supplier_paper_add_pc_machine operate_supplier_paper_add_enterprise_administrator Disable Warnings - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${supplier_enterprise_administrator_realname} Set Variable autotest_name_supplier ${supplier_enterprise_administrator_mobile} Set Variable 13123456789 ${supplier_enterprise_administrator_position} Set Variable ADMINISTRATOR #角色 ADMINISTRATOR管理员 ORDINARY普通员工 @@ -200,33 +188,29 @@ operate_supplier_paper_add_enterprise_administrator ${response} POST On Session yytops /cloud-print-user-center/admin/save/user/to/enterprise ${body.encode("utf8")} Set Suite Variable ${supplier_enterprise_administrator_mobile} Set Suite Variable ${supplier_enterprise_administrator_realname} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} sleep 1 operate_get_supplier_paper_base_info - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${response} Get On Session yytops /cloud-print-user-center/admin/get/supplier/base-info/${supplier_enterprise_id} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} operate_get_supplier_paper_settlement_account_info - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${response} Get On Session yytops /cloud-print-user-center/admin/get/supplier/settlement-account-info/${supplier_enterprise_id} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} operate_get_supplier_paper_employee_list - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${param} Set Variable supplierEnterpriseId=${supplier_enterprise_id} ${response} Get On Session yytops /cloud-print-user-center/get/employee-list params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -237,70 +221,45 @@ operate_get_supplier_paper_machine_list Create Session yytops ${yytops} headers=${operation_backend_header} ${param} Set Variable enterpriseId=${supplier_enterprise_id} ${response} Get On Session yytops /cloud-print-user-center/get/supplier/machine/page params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} operate_get_supplier_paper_purchase_order_list - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${param} Set Variable enterpriseId=${supplier_enterprise_id} ${response} Get On Session yytops /trading-center/admin/get/purchase-order-list/in/supplier-detail params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} supplier_phone - #去除警告 Disable Warnings - #创建会话 会话别名 baseurl headers Create Session uecclient ${uecclient} headers=${cloud_factory_supplier_header} - #变量名称 设置用例变量 变量值 ${accounttype} Set Variable 2 #账号类型 1微信 2手机号 3邮箱 4苹果 5自定义账号 ${account} Set Variable 13123456789 ${body} Set Variable {"accountType":${accounttype},"account":"${account}","captcha":"888888"} - #变量接收响应结果 post请求 会话别名 uri 传参 ${response} POST On Session uecclient /uec/authorize/by-captcha ${body} - #日志 - Log ${response.status_code} - #日志 - Log ${response.text} - #日志 Log ${response.json()} - #断言数字 预期结果 实际结果 Should Be Equal As Numbers 200 ${response.status_code} - #断言字符串 预期结果 实际结果 Should Be Equal As Strings successful ${response.json()["message"]} - #变量接收token 获取字典内容 响应结果 token-key ${gettoken_supplier} Get From Dictionary ${response.json()["data"]} token - #日志 - log ${gettoken_supplier} - #设置token变量 未转业务线 Set Suite Variable ${gettoken_supplier} - #变量接收供应商userid 获取字典内容 响应结果 userid-key ${userid_supplier} Get From Dictionary ${response.json()["data"]} userId - #日志 - log ${userid_supplier} - #设置token变量 Set Suite Variable ${userid_supplier} - #设置带token的请求头 - &{cloudfactorysupplierheader} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${gettoken_supplier} - #设置token变量 - Set Suite Variable ${cloudfactorysupplierheader} + #&{cloudfactorysupplierheader} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${gettoken_supplier} + #Set Suite Variable ${cloudfactorysupplierheader} supplier_login_token Disable Warnings - Create Session yytclient ${yytclient} headers=${cloudfactorysupplierheader} + Create Session yytclient ${yytclient} headers=${cloud_factory_supplier_header} ${body} Set Variable {"loginToken":"${gettoken_supplier}"} ${response} POST On Session yytclient /cloud-print-user-center/authorize/get/product-line-token/by/login-token ${body.encode("utf8")} - Log ${response.status_code} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} - Should Be Equal As Strings successful ${response.json()["message"]} - ${getlogintoken_supplier} Get From Dictionary ${response.json()} data - log ${getlogintoken_supplier} - #全局token + #Should Be Equal As Strings successful ${response.json()["message"]} + ${get_status} ${token} Run Keyword And Ignore Error Get From Dictionary ${response.json()} data + ${getlogintoken_supplier} Set Variable If "${get_status}"=="FAIL" ${gettoken_supplier} "${token}"=="None" ${gettoken_supplier} ${token} Set Global Variable ${getlogintoken_supplier} - &{cloudfactory_supplierheader} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier} - Set Global Variable ${cloudfactory_supplierheader} + &{cloudfactory_supplier_header} Create Dictionary Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier} + Set Global Variable ${cloudfactory_supplier_header} diff --git a/005_enterprise_apply_credit/apply_credit_qniao_customer.robot b/005_enterprise_apply_credit/apply_credit_qniao_customer.robot index e7dd247..e4ab862 100644 --- a/005_enterprise_apply_credit/apply_credit_qniao_customer.robot +++ b/005_enterprise_apply_credit/apply_credit_qniao_customer.robot @@ -3,15 +3,10 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{operationpsc_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965324 Authorization=${gettoken_operate_psc} -${pscops} https://api-ops-psc-test.qniao.cn -${yytops} https://api-ops-yyt-test.qniao.cn - *** Test Cases *** operate_save_apply_credit_qniao Disable Warnings - Create Session yytops ${yytops} headers=${operationbackend_header} + Create Session yytops ${yytops} headers=${operationpsc_header} ${printing_packaging_factory_type} Set Variable 2 ${printing_packaging_factory_purpose} Set Variable 1 #授信类型 1采购原纸 ${printing_packaging_factory_creditLine} Set Variable 990000 @@ -20,7 +15,6 @@ operate_save_apply_credit_qniao ${body} Set Variable {"creditLine":${printing_packaging_factory_creditLine},"enterpriseId":"${printing_packaging_factory_id}","enterpriseName":"${printing_packaging_factory_name}","enterpriseType":${printing_packaging_factory_type},"legalpersonIdNo":"${printing_packaging_factory_legalpersonidcardno}","legalpersonMobile":null,"legalpersonName":"${printing_packaging_factory_legalpersonname}","purpose":${printing_packaging_factory_purpose},"remark":"${printing_packaging_factory_remark}","paperSettlementIntervalTypeId":"${printing_packaging_factory_paperSettlementIntervalTypeId}"} ${response} POST On Session yytops /cloud-print-user-center/admin/credit/application/save/application ${body.encode("utf8")} Set Suite Variable ${printing_packaging_factory_creditLine} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -29,7 +23,6 @@ operate_save_apply_credit_qniao operate_get_credit_list Create Session yytops ${yytops} headers=${operationpsc_header} ${response} Get On Session yytops /cloud-print-user-center/admin/credit/application/get/application-order-list - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -38,7 +31,6 @@ operate_get_credit_list_search Create Session yytops ${yytops} headers=${operationpsc_header} ${param} Set Variable timeBegin=${current_date} 00:00:00&timeEnd=${current_date} 23:59:59&enterpriseName=${printing_packaging_factory_name}&legalpersonName=${printing_packaging_factory_legalpersonname} ${response} Get On Session yytops /cloud-print-user-center/admin/credit/application/get/application-order-list params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -47,11 +39,10 @@ operate_get_credit_list_search operate_verify_reject_apply_credit_qniao Disable Warnings - Create Session yytops ${yytops} headers=${operationbackend_header} + Create Session yytops ${yytops} headers=${operationpsc_header} ${printing_packaging_factory_verify_status} Set Variable 2 #审核状态 1审核通过 2审核驳回 ${body} Set Variable {"status":${printing_packaging_factory_verify_status}} ${response} Put On Session yytops /cloud-print-user-center/admin/credit/application/verify/application-order/${printing_packaging_factory_credit_id} ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -59,7 +50,7 @@ operate_verify_reject_apply_credit_qniao operate_update_apply_credit_qniao Disable Warnings - Create Session yytops ${yytops} headers=${operationbackend_header} + Create Session yytops ${yytops} headers=${operationpsc_header} ${printing_packaging_factory_type} Set Variable 2 ${printing_packaging_factory_purpose} Set Variable 1 #授信类型 1采购原纸 ${printing_packaging_factory_creditLine} Set Variable 990000 @@ -67,7 +58,6 @@ operate_update_apply_credit_qniao ${printing_packaging_factory_remark} Set Variable autotest_remark ${body} Set Variable {"id":"${printing_packaging_factory_credit_id}","creditLine":${printing_packaging_factory_creditLine},"enterpriseId":"${printing_packaging_factory_id}","enterpriseName":"${printing_packaging_factory_name}","enterpriseType":${printing_packaging_factory_type},"legalpersonIdNo":"${printing_packaging_factory_legalpersonidcardno}","legalpersonMobile":null,"legalpersonName":"${printing_packaging_factory_legalpersonname}","purpose":${printing_packaging_factory_purpose},"remark":"${printing_packaging_factory_remark}","paperSettlementIntervalTypeId":"${printing_packaging_factory_paperSettlementIntervalTypeId}"} ${response} POST On Session yytops /cloud-print-user-center/admin/credit/application/update/application ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -75,11 +65,10 @@ operate_update_apply_credit_qniao operate_verify_pass_apply_credit_qniao Disable Warnings - Create Session yytops ${yytops} headers=${operationbackend_header} + Create Session yytops ${yytops} headers=${operationpsc_header} ${printing_packaging_factory_verify_status} Set Variable 1 #审核状态 1审核通过 2审核驳回 ${body} Set Variable {"status":${printing_packaging_factory_verify_status}} ${response} Put On Session yytops /cloud-print-user-center/admin/credit/application/verify/application-order/${printing_packaging_factory_credit_id} ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -88,7 +77,6 @@ operate_verify_pass_apply_credit_qniao operate_get_credit_list_details Create Session yytops ${yytops} headers=${operationpsc_header} ${response} Get On Session yytops /cloud-print-user-center/admin/credit/get/enterprise-credit-list - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -97,7 +85,6 @@ operate_get_credit_list_details_search Create Session yytops ${yytops} headers=${operationpsc_header} ${param} Set Variable enterpriseName=${printing_packaging_factory_name}&legalpersonName=${printing_packaging_factory_legalpersonname} ${response} Get On Session yytops /cloud-print-user-center/admin/credit/get/enterprise-credit-list params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -108,7 +95,6 @@ operate_get_credit_list_details_search operate_get_credit_list_details_list Create Session yytops ${yytops} headers=${operationpsc_header} ${response} Get On Session yytops /cloud-print-user-center/admin/credit/order/get/order-list/${printing_packaging_factory_credit_details_id} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/006_get_credit/__init__.robot b/006_get_credit/__init__.robot deleted file mode 100644 index e69de29..0000000 diff --git a/006_get_credit/customer_credit_password.robot b/006_get_credit/customer_credit_password.robot index ea65ecb..5a052cd 100644 --- a/006_get_credit/customer_credit_password.robot +++ b/006_get_credit/customer_credit_password.robot @@ -3,10 +3,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_customer_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** customer_get_credit_password_status Create Session yytclient ${yytclient} headers=${cloudfactory_customer_header} diff --git a/006_get_credit/customer_get_credit.robot b/006_get_credit/customer_get_credit.robot index ef02af1..9fe4497 100644 --- a/006_get_credit/customer_get_credit.robot +++ b/006_get_credit/customer_get_credit.robot @@ -3,10 +3,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_customer_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** customer_get_credit_qniao Create Session yytclient ${yytclient} headers=${cloudfactory_customer_header} diff --git a/007_paper_variety_management/paper_brand.robot b/007_paper_variety_management/paper_brand.robot index c32c06e..c6c9775 100644 --- a/007_paper_variety_management/paper_brand.robot +++ b/007_paper_variety_management/paper_brand.robot @@ -3,10 +3,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_supplierfocus_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier_focus} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** supplierfocus_save_paper_brand Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} @@ -26,7 +22,6 @@ supplierfocus_save_paper_brand Set Suite Variable ${paper_description} Set Suite Variable ${paper_brand_img} ${response} POST On Session yytclient /trading-center/save/product/brand ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -35,7 +30,6 @@ supplierfocus_save_paper_brand supplierfocus_get_paper_brand_list Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${response} Get On Session yytclient /trading-center/get/product/brand-list - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -46,7 +40,6 @@ supplierfocus_search_paper_brand Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${param} Set Variable searchValue=${paper_brand_name} ${response} Get On Session yytclient /trading-center/get/product/brand-list params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -59,7 +52,6 @@ supplierfocus_edit_paper_brand Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${body} Set Variable {"id":"${paper_brand_id}","categoryId":"${paper_categoryid}","paperManufacturerId":"${paper_Manufacturerid}","name":"${paper_brand_name}","paperName":"${paper_name}","characteristic":"${paper_characteristic}","description":"${paper_description}","img":"${paper_brand_img}"} ${response} POST On Session yytclient /trading-center/save/product/brand ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -68,7 +60,6 @@ supplierfocus_update_status_paper_brand Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${body} Set Variable {"idList":["${paper_brand_id}"],"status":0} #纸品状态 0上架 1下架 ${response} POST On Session yytclient /trading-center/update/category-brands/status/batch ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/007_paper_variety_management/paper_category.robot b/007_paper_variety_management/paper_category.robot index 6799862..ce5e015 100644 --- a/007_paper_variety_management/paper_category.robot +++ b/007_paper_variety_management/paper_category.robot @@ -4,10 +4,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_supplierfocus_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier_focus} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** supplierfocus_save_paper_category Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} @@ -16,7 +12,6 @@ supplierfocus_save_paper_category Set Suite Variable ${paper_category_name} ${response} POST On Session yytclient /trading-center/save/product/paper-category ${body.encode("utf8")} Set Global Variable ${paper_category_name} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -24,7 +19,6 @@ supplierfocus_save_paper_category supplierfocus_get_paper_category_list Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${response} Get On Session yytclient /trading-center/get/product/paper-category-list - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -38,7 +32,6 @@ supplierfocus_edit_paper_category Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${body} Set Variable {"name":"${paper_category_name}","id":"${paper_category_id}","status":${paper_category_status}} ${response} POST On Session yytclient /trading-center/save/product/paper-category ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -47,7 +40,6 @@ supplierfocus_disable_paper_category Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${body} Set Variable {"name":"${paper_category_name}","id":"${paper_category_id}","status":1} ${response} POST On Session yytclient /trading-center/save/product/paper-category ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/007_paper_variety_management/paper_manufacturer.robot b/007_paper_variety_management/paper_manufacturer.robot index 2c2619d..c75ec41 100644 --- a/007_paper_variety_management/paper_manufacturer.robot +++ b/007_paper_variety_management/paper_manufacturer.robot @@ -3,10 +3,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_supplierfocus_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier_focus} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** supplierfocus_save_paper_manufacturer Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} @@ -20,7 +16,6 @@ supplierfocus_save_paper_manufacturer Set Suite Variable ${paper_manufacturer_description} Set Suite Variable ${paper_manufacturer_logoImg} ${response} POST On Session yytclient /trading-center/save/paper-manufacturer ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -29,7 +24,6 @@ supplierfocus_save_paper_manufacturer supplierfocus_get_paper_manufacturer_list Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${response} Get On Session yytclient /trading-center/get/paper-manufacturer/list - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -41,7 +35,6 @@ supplierfocus_search_paper_manufacturer Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${param} Set Variable searchValue=${paper_manufacturer_name} ${response} Get On Session yytclient /trading-center/get/paper-manufacturer/list params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -52,7 +45,6 @@ supplierfocus_edit_paper_manufacturer Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${body} Set Variable {"id":"${paper_manufacturer_id}","name":"${paper_manufacturer_name}","shortName":"${paper_manufacturer_shortName}","description":"${paper_manufacturer_description}","logoImg":"${paper_manufacturer_logoImg}"} ${response} POST On Session yytclient /trading-center/save/paper-manufacturer ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/008_market_information/market_information_link.robot b/008_market_information/market_information_link.robot index 4e8e1f5..9413957 100644 --- a/008_market_information/market_information_link.robot +++ b/008_market_information/market_information_link.robot @@ -3,12 +3,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{operationbackend_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847952999 Authorization=${gettoken_operate} -${yytops} https://api-ops-yyt-test.qniao.cn -&{cloudfactory_customer_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** operate_save_market_information_link Disable Warnings @@ -17,7 +11,6 @@ operate_save_market_information_link ${body} Set Variable {"link":"${market_information_link}"} Set Suite Variable ${market_information_link} ${response} POST On Session yytops /trading-center/admin/save/market-information-link ${body.encode("utf8")} - Log ${response.status_code} Log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -25,7 +18,6 @@ operate_save_market_information_link operate_get_market_information_link_list Create Session yytops ${yytops} headers=${operationbackend_header} ${response} Get On Session yytops /trading-center/admin/get/market-information-link-list - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -34,7 +26,6 @@ operate_get_market_information_link_list customer_get_market_information_link Create Session yytclient ${yytclient} headers=${cloudfactory_customer_header} ${response} Get On Session yytclient /trading-center/get/market-information-link - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -43,7 +34,6 @@ customer_get_market_information_link record_market_information_link_view Create Session yytclient ${yytclient} headers=${cloudfactory_customer_header} ${response} POST On Session yytclient /trading-center/record/market-information-link/view - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/009_product_manage/product_add_and_list.robot b/009_product_manage/product_add_and_list.robot index 2ed6da2..0bc4347 100644 --- a/009_product_manage/product_add_and_list.robot +++ b/009_product_manage/product_add_and_list.robot @@ -3,16 +3,11 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_supplierfocus_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847953922 Authorization=${getlogintoken_supplier_focus} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** supplierfocus_product_check_exist Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${param} Set Variable categoryBrandId=${paper_brand_id}&salesEnterpriseId=${supplier_enterprise_id} ${response} Get On Session yytclient /trading-center/product/check-exist params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -26,7 +21,6 @@ supplierfocus_save_product ${response} POST On Session yytclient /trading-center/save/product ${body.encode("utf8")} Set Global Variable ${gramweight} Set Global Variable ${purchasePrice} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -37,7 +31,6 @@ supplierfocus_save_product supplierfocus_get_product_list Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${response} Get On Session yytclient /trading-center/get/seller/query-product-list - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -49,7 +42,6 @@ supplierfocus_get_product_list_search ${product_status} Set Variable 30112 #商品状态 30110未上架 30111上架中 30112已下架 ${param} Set Variable salesEnterpriseId=${supplier_paper_id}&name=${paper_name} ${response} Get On Session yytclient /trading-center/get/seller/query-product-list params-${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -61,7 +53,6 @@ supplierfocus_edit_product_status_up ${product_status} Set Variable 1 #上下架状态 1上架 2下架 ${body} Set Variable {"status":${product_status},"id":"${product_id}"} ${response} POST On Session yytclient /trading-center/edit/product/status/${product_id} ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -71,7 +62,6 @@ supplierfocus_edit_product_status_down ${product_status} Set Variable 2 #上下架状态 1上架 2下架 ${body} Set Variable {"status":${product_status},"id":"${product_id}"} ${response} POST On Session yytclient /trading-center/edit/product/status/${product_id} ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -81,7 +71,6 @@ supplierfocus_batch_product_status_up ${product_status} Set Variable 30111 #批量上下架状态 30110未上架 30111上架中 30112已下架 ${body} Set Variable {"status":${product_status},"idList":["${product_id}","${product_id1}"]} ${response} POST On Session yytclient /trading-center/update/product-status/batch ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/010_limited_specialoffer/limited_specialoffer_product.robot b/010_limited_specialoffer/limited_specialoffer_product.robot index 45729dd..ac0ecc5 100644 --- a/010_limited_specialoffer/limited_specialoffer_product.robot +++ b/010_limited_specialoffer/limited_specialoffer_product.robot @@ -4,27 +4,19 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{operation_backend_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847952999 Authorization=${gettoken_operate} -${yytops} https://api-ops-yyt-test.qniao.cn -&{cloudfactory_customer_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** operate_get_noton_sale_product_list - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${param} Set Variable isOnSale=0 #是否特价 0否 1是 ${response} Get On Session yytops /trading-center/admin/get/on-sale-category-brand-list params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} operate_on_sale_product_list_earch - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${param} Set Variable isOnSale=0&name=${paper_brand_name}&paperName=${paper_name} ${response} Get On Session yytops /trading-center/admin/get/on-sale-category-brand-list params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -32,20 +24,18 @@ operate_on_sale_product_list_earch Set Global Variable ${on_sale_product_paper_id} operate_add_on_sale_product - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${product_isOnSale} Set Variable 1 #是否特价 0否 1是 ${body} Set Variable {"categoryBrandIds":["${on_sale_product_paper_id}"],"isOnSale":${product_isOnSale}} ${response} POST On Session yytops trading-center/admin/add-or-remove/on-sale-category-brands ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} operate_get_on_sale_product_list - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${param} Set Variable isOnSale=1 #是否特价 0否 1是 ${response} Get On Session yytops /trading-center/admin/get/on-sale-category-brand-list params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -55,18 +45,16 @@ customer_get_on_sale_product_list Create Session yytclient ${yytclient} headers=${cloudfactory_customer_header} ${param} Set Variable isOnSale=1 #是否特价 0否 1是 ${response} Get On Session yytclient /trading-center/wechatapplet/get/paper-brand/brand-list params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} Should Be Equal As Strings ${on_sale_product_paper_id} ${response.json()["data"]["records"][0]["id"]} operate_remove_on_sale_product - Create Session yytops ${yytops} headers=${operation_backend_header} + Create Session yytops ${yytops} headers=${operationbackend_header} ${product_isOnSale} Set Variable 0 #是否特价 0否 1是 ${body} Set Variable {"categoryBrandIds":["${on_sale_product_paper_id}"],"isOnSale":${product_isOnSale}} ${response} POST On Session yytops trading-center/admin/add-or-remove/on-sale-category-brands ${body.encode("utf8")} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/011_product_price_config/product_price_config_qniao_and_feisuan.robot b/011_product_price_config/product_price_config_qniao_and_feisuan.robot index a5dd839..faff2dd 100644 --- a/011_product_price_config/product_price_config_qniao_and_feisuan.robot +++ b/011_product_price_config/product_price_config_qniao_and_feisuan.robot @@ -3,15 +3,10 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_supplierfocus_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier_focus} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** product_price_config_qniao_and_feisuan_list Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${response} Get On Session yytclient /cloud-print-user-center/get/settlement-interval/two-dimension/list - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -19,7 +14,6 @@ product_price_config_qniao_and_feisuan_list product_price_config_qniao_and_feisuan_update_log_list Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${response} Get On Session yytclient /cloud-print-user-center/get/paper/premium-rate/history/page - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/012_product_price_update/product_price_batch_update_purchaseprice.robot b/012_product_price_update/product_price_batch_update_purchaseprice.robot index b8b02f9..a095a10 100644 --- a/012_product_price_update/product_price_batch_update_purchaseprice.robot +++ b/012_product_price_update/product_price_batch_update_purchaseprice.robot @@ -3,15 +3,10 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_supplierfocus_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier_focus} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** product_price_sku_list Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${response} Get On Session yytclient /trading-center/get/seller/product-sku-list - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -20,7 +15,6 @@ product_price_sku_list_search Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} ${param} Set Variable salesEnterpriseId=${supplier_paper_id}&name=${paper_name} ${response} Get On Session yytclient /trading-center/get/seller/product-sku-list params=${param} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} @@ -34,7 +28,6 @@ product_price_sku_batch_update_purchaseprice ${body} Set Variable {"skuids":["${product_price_sku_id}"],"alterType":${product_price_sku_alterType},"price":${product_price_sku_new}} ${response} POST On Session yytclient /trading-center/product/unify/alter/purchasing-cost ${body.encode("utf8")} Set Global Variable ${product_price_sku_new} - Log ${response.status_code} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} diff --git a/013_paper_list_and_details/customer_get_paper_list_and_detail.robot b/013_paper_list_and_details/customer_get_paper_list_and_detail.robot index dd416ff..60fa4f5 100644 --- a/013_paper_list_and_details/customer_get_paper_list_and_detail.robot +++ b/013_paper_list_and_details/customer_get_paper_list_and_detail.robot @@ -3,10 +3,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_customer_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** customer_get_paper_list Create Session yytclient ${yytclient} headers=${cloudfactory_customer_header} diff --git a/014_shinpping_address/customer_enterprise_shipping_address.robot b/014_shinpping_address/customer_enterprise_shipping_address.robot index 82fb45a..e604b5b 100644 --- a/014_shinpping_address/customer_enterprise_shipping_address.robot +++ b/014_shinpping_address/customer_enterprise_shipping_address.robot @@ -3,10 +3,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_customer_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} -${uecclient} https://api-client-uec-test.qniao.cn - *** Test Cases *** customer_enterprise_shipping_address_list Create Session uecclient ${uecclient} headers=${cloudfactory_customer_header} diff --git a/015_customer_create_order/customer_create_order_credit_payment.robot b/015_customer_create_order/customer_create_order_credit_payment.robot index 4ee2cfb..357ff16 100644 --- a/015_customer_create_order/customer_create_order_credit_payment.robot +++ b/015_customer_create_order/customer_create_order_credit_payment.robot @@ -3,11 +3,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_customer_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} -&{cloudfactory_supplierfocus_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier_focus} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** get_settlement_interval_premium_rate_qniao Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} @@ -22,7 +17,7 @@ get_settlement_interval_premium_rate_qniao get_settlement_interval_premium_rate_feisuan Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} - ${settlement_interval_premium_rate_type} Set Variable 0 #加价率类型 不传或NULL或0千鸟加价率 1为飞算加价率 + ${settlement_interval_premium_rate_type} Set Variable 1 #加价率类型 不传或NULL或0千鸟加价率 1为飞算加价率 ${param} Set Variable clientEnterpriseId=${printing_packaging_factory_id}&supplierId=${supplier_paper_id}&type=${settlement_interval_premium_rate_type} ${response} Get On Session yytclient /cloud-print-user-center/get/settlement-interval/premium-rate params=${param} log ${response.json()} diff --git a/016_enquiry_create_order/customer_enquiry_operate_and_supplier_quoted_price_create_order.robot b/016_enquiry_create_order/customer_enquiry_operate_and_supplier_quoted_price_create_order.robot index 9eda80f..8d1ffb2 100644 --- a/016_enquiry_create_order/customer_enquiry_operate_and_supplier_quoted_price_create_order.robot +++ b/016_enquiry_create_order/customer_enquiry_operate_and_supplier_quoted_price_create_order.robot @@ -3,12 +3,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_customer_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} -&{cloudfactory_supplierfocus_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier_focus} -&{cloud_factory_supplier_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** customer_add_enquiry Create Session yytclient ${yytclient} headers=${cloudfactory_customer_header} @@ -103,8 +97,8 @@ supplierfocus_submit_paper_quotation ${paper_quotation_quantity1} Set Variable 5500 ${paper_quotation_buyton1} Evaluate ${paper_quotation_gramWeight1}*${paper_quotation_width1}*${paper_quotation_length1}*${paper_quotation_quantity1}/1000000000000 ${paper_quotation_buyTon1} Convert To Number ${paper_quotation_buyton1} 4 #precision 如果可选精度为正或零,则返回的数字将四舍五入到小数位数。负精度意味着数字四舍五入到绝对精度幂的最接近10的倍数。如果一个数字同样接近某一精度,它总是从零开始四舍五入。 - ${paper_quotation_unitfee1} Evaluate ${product_price_sku_new}*${settlement_interval_premium_rate_qniao} - ${paper_quotation_flyCalcSalesprice1} Evaluate ${product_price_sku_new}*${settlement_interval_premium_rate_feisuan} + ${paper_quotation_unitfee1} Evaluate ${product_price_sku_new}*(1+${settlement_interval_premium_rate_qniao}) + ${paper_quotation_flyCalcSalesprice1} Evaluate ${product_price_sku_new}*(1+${settlement_interval_premium_rate_feisuan}) ${paper_quotation_otherFee} Set Variable 0 ${paper_quotation_unitFee1} Convert To Number ${paper_quotation_unitfee1} ${paper_quotation_flyCalcSalesPrice1} Convert To Number ${paper_quotation_flyCalcSalesprice1} @@ -116,14 +110,14 @@ supplierfocus_submit_paper_quotation ${paper_quotation_quantity2} Set Variable 5000 ${paper_quotation_buyton2} Evaluate ${paper_quotation_gramWeight2}*${paper_quotation_width2}*${paper_quotation_length2}*${paper_quotation_quantity2}/1000000000000 ${paper_quotation_buyTon2} Convert To Number ${paper_quotation_buyton2} 4 #precision 如果可选精度为正或零,则返回的数字将四舍五入到小数位数。负精度意味着数字四舍五入到绝对精度幂的最接近10的倍数。如果一个数字同样接近某一精度,它总是从零开始四舍五入。 - ${paper_quotation_unitfee2} Evaluate ${product_price_sku_new}*${settlement_interval_premium_rate_qniao} - ${paper_quotation_flyCalcSalesprice2} Evaluate ${product_price_sku_new}*${settlement_interval_premium_rate_feisuan} + ${paper_quotation_unitfee2} Evaluate ${product_price_sku_new}*(1+${settlement_interval_premium_rate_qniao}) + ${paper_quotation_flyCalcSalesprice2} Evaluate ${product_price_sku_new}*(1+${settlement_interval_premium_rate_feisuan}) ${paper_quotation_unitFee2} Convert To Number ${paper_quotation_unitfee2} ${paper_quotation_flyCalcSalesPrice2} Convert To Number ${paper_quotation_flyCalcSalesprice2} ${paper_quotation_totalOfferPrice2} Evaluate ${paper_quotation_unitFee2}*${paper_quotation_buyTon2}+${paper_quotation_otherFee} ${paper_quotation_totalOfferPrice_item2} Convert To Number ${paper_quotation_totalOfferPrice2} 2 ${supplierfocus_paper_quotation_remark} Set Variable autotest_supplierfocus_paper_quotation_remark - ${body} Set Variable {"addList":[],"delList":[],"enquiryId":"${customer_enquiry_id}","updateList":[{"enquiryId":"${customer_enquiry_id}","paperQuotedPriceId":"${paperQuotedPriceId}","id":"${paper_quotes_item_id1}","productSkuId":"${product_price_sku_id}","paperId":null,"brandId":"${paper_brand_id}","paperName":null,"brandName":"${paper_name}","productName":null,"gramWeight":${paper_quotation_gramWeight1},"quantity":${paper_quotation_quantity1},"length":${paper_quotation_length1},"width":${paper_quotation_width1},"weight":${paper_quotation_buyTon1},"unitFee":${paper_quotation_unitFee1},"totalPrice":"${paper_quotation_totalOfferPrice_item1}","createTime":"${current_date_second.encode('utf-8')}","updateTime":"${current_date_second.encode('utf-8')}","effectiveTime":"${current_date_second.encode('utf-8')}","salesEnterpriseId":"${supplier_paper_id}","remark":"${customer_enquiry_remark}","purchasePrice":${product_price_sku_new},"otherFee":${paper_quotation_otherFee},"repEnterprise":"553652487819759617","repEnterpriseName":"千鸟官方直营","salesEnterpriseName":"${printing_packaging_factory_name}","flyCalcSalesPrice":${paper_quotation_flyCalcSalesPrice1}},{"enquiryId":"${customer_enquiry_id}","paperQuotedPriceId":"${paperQuotedPriceId}","id":"${paper_quotes_item_id2}","productSkuId":"${product_price_sku_id}","paperId":null,"brandId":"${paper_brand_id}","paperName":null,"brandName":"${paper_name}","productName":null,"gramWeight":${paper_quotation_gramWeight2},"quantity":${paper_quotation_quantity2},"length":${paper_quotation_length2},"width":${paper_quotation_width2},"weight":${paper_quotation_buyTon2},"unitFee":${paper_quotation_unitFee2},"totalPrice":"${paper_quotation_totalOfferPrice_item2}","createTime ":"${current_date_second.encode('utf-8')}","updateTime":"${current_date_second.encode('utf-8')}","effectiveTime":"${current_date_second.encode('utf-8')}","salesEnterpriseId":"${supplier_paper_id}","remark":"${customer_enquiry_remark}","purchasePrice":${product_price_sku_new},"otherFee":${paper_quotation_otherFee},"repEnterprise":"${supplier_paper_id}","repEnterpriseName":"千鸟官方直营","salesEnterpriseName":"${printing_packaging_factory_name}","flyCalcSalesPrice":${paper_quotation_flyCalcSalesPrice2}}],"remark":"${supplierfocus_paper_quotation_remark}"} + ${body} Set Variable {"addList":[],"delList":[],"enquiryId":"${customer_enquiry_id}","updateList":[{"enquiryId":"${customer_enquiry_id}","paperQuotedPriceId":"${paperQuotedPriceId}","id":"${paper_quotes_item_id1}","productSkuId":"${product_price_sku_id}","paperId":null,"brandId":"${paper_brand_id}","paperName":null,"brandName":"${paper_name}","productName":null,"gramWeight":${paper_quotation_gramWeight1},"quantity":${paper_quotation_quantity1},"length":${paper_quotation_length1},"width":${paper_quotation_width1},"weight":${paper_quotation_buyTon1},"unitFee":${paper_quotation_unitFee1},"totalPrice":"${paper_quotation_totalOfferPrice_item1}","createTime":"${current_date_second.encode('utf-8')}","updateTime":"${current_date_second.encode('utf-8')}","effectiveTime":"${current_date_second.encode('utf-8')}","salesEnterpriseId":"${supplier_paper_id}","remark":"${customer_enquiry_remark}","purchasePrice":${product_price_sku_new},"otherFee":${paper_quotation_otherFee},"repEnterprise":"553652487819759617","repEnterpriseName":"千鸟官方直营","salesEnterpriseName":"${printing_packaging_factory_name}","flyCalcSalesPrice":${paper_quotation_flyCalcSalesPrice1}},{"enquiryId":"${customer_enquiry_id}","paperQuotedPriceId":"${paperQuotedPriceId}","id":"${paper_quotes_item_id2}","productSkuId":"${product_price_sku_id}","paperId":null,"brandId":"${paper_brand_id}","paperName":null,"brandName":"${paper_name}","productName":null,"gramWeight":${paper_quotation_gramWeight2},"quantity":${paper_quotation_quantity2},"length":${paper_quotation_length2},"width":${paper_quotation_width2},"weight":${paper_quotation_buyTon2},"unitFee":${paper_quotation_unitFee2},"totalPrice":"${paper_quotation_totalOfferPrice_item2}","createTime ":"${current_date_second.encode('utf-8')}","updateTime":"${current_date_second.encode('utf-8')}","effectiveTime":"${current_date_second.encode('utf-8')}","salesEnterpriseId":"${supplier_paper_id}","remark":"${customer_enquiry_remark}","purchasePrice":${product_price_sku_new},"otherFee":${paper_quotation_otherFee},"repEnterprise":"553652487819759617","repEnterpriseName":"千鸟官方直营","salesEnterpriseName":"${printing_packaging_factory_name}","flyCalcSalesPrice":${paper_quotation_flyCalcSalesPrice2}}],"remark":"${supplierfocus_paper_quotation_remark}"} ${response} POST On Session yytclient /trading-center/submit/paper-quotation ${body.encode("utf-8")} Set Suite Variable ${paper_quotation_gramWeight1} Set Suite Variable ${paper_quotation_width1} diff --git a/017_order_and_receipt_and_delivery/get_oeder_and_receipt_and_delivery.robot b/017_order_and_receipt_and_delivery/get_oeder_and_receipt_and_delivery.robot index e7e7ff0..e5df41c 100644 --- a/017_order_and_receipt_and_delivery/get_oeder_and_receipt_and_delivery.robot +++ b/017_order_and_receipt_and_delivery/get_oeder_and_receipt_and_delivery.robot @@ -3,11 +3,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_customer_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} -&{cloudfactory_supplierfocus_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier_focus} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** customer_get_order_list Create Session yytclient ${yytclient} headers=${cloudfactory_customer_header} @@ -64,7 +59,6 @@ supplierfocus_get_order_order-item-list supplierfocus_create_supplier_order_batch Create Session yytclient ${yytclient} headers=${cloudfactory_supplierfocus_header} - ${supplier_order_remark} Set Variable autotest_supplier_order_remark ${customer_enterprise_shipping_address_receiver} Set Variable autotest_receiver ${customer_enterprise_shipping_address_receiverMobile} Set Variable 13800138000 ${customer_enterprise_shipping_address_detail} Set Variable autotest_customer_enterprise_shipping_address_detail @@ -76,6 +70,7 @@ supplierfocus_create_supplier_order_batch ${customer_enterprise_shipping_address_cityname} Set Variable 广州市 ${customer_enterprise_shipping_address_districtname} Set Variable 天河区 ${customer_enterprise_shipping_address_streetname} Set Variable 车陂街道 + ${supplier_order_remark} Set Variable autotest_supplier_order_remark ${body} Set Variable {"orderItemList":[{"deliveryId":"${customer_enterprise_shipping_address_id}","deliveryProvinceId":${customer_enterprise_shipping_address_provinceid},"deliveryProvinceName":"${customer_enterprise_shipping_address_provincename}","deliveryCityId":${customer_enterprise_shipping_address_cityid},"deliveryCityName":"${customer_enterprise_shipping_address_cityname}","deliveryDistrictId":${customer_enterprise_shipping_address_districtid},"deliveryDistrictName":"${customer_enterprise_shipping_address_districtname}","deliveryStreetId":${customer_enterprise_shipping_address_streetid},"deliveryStreetName":"${customer_enterprise_shipping_address_streetname}","deliveryDetails":"${customer_enterprise_shipping_address_detail}","receiver":"${customer_enterprise_shipping_address_receiver}","receiverMobile":"${customer_enterprise_shipping_address_receiverMobile}","otherFee":0,"remark":"autotest_supplier_order_remark","unitPrice":5000,"supplyOrderItemId":"${supply_order_item_id1}"},{"deliveryId":"${customer_enterprise_shipping_address_id}","deliveryProvinceId":${customer_enterprise_shipping_address_provinceid},"deliveryProvinceName":"${customer_enterprise_shipping_address_provincename}","deliveryCityId":${customer_enterprise_shipping_address_cityid},"deliveryCityName":"${customer_enterprise_shipping_address_cityname}","deliveryDistrictId":${customer_enterprise_shipping_address_districtid},"deliveryDistrictName":"${customer_enterprise_shipping_address_districtname}","deliveryStreetId":${customer_enterprise_shipping_address_streetid},"deliveryStreetName":"${customer_enterprise_shipping_address_streetname}","deliveryDetails":"${customer_enterprise_shipping_address_detail}","receiver":"${customer_enterprise_shipping_address_receiver}","receiverMobile":"${customer_enterprise_shipping_address_receiverMobile}","otherFee":0,"remark":"autotest_supplier_order_remark","unitPrice":5000,"supplyOrderItemId":"${supply_order_item_id2}"}]} ${response} POST On Session yytclient /trading-center/seller/create/supplier-order-batch ${body.encode("utf-8")} log ${response.json()} @@ -84,14 +79,14 @@ supplierfocus_create_supplier_order_batch sleep 1 supplier_get_order_list - Create Session yytclient ${yytclient} headers=${cloudfactory_supplierheader} + Create Session yytclient ${yytclient} headers=${cloudfactory_supplier_header} ${response} Get On Session yytclient /trading-center/wechatapplet/get/supplier-order-page log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} Should Be Equal As Strings successful ${response.json()["message"]} supplier_get_order_list_search - Create Session yytclient ${yytclient} headers=${cloudfactory_supplierheader} + Create Session yytclient ${yytclient} headers=${cloudfactory_supplier_header} ${param} Set Variable status=2 #供应商获取订单状态 2待送货 ${response} Get On Session yytclient /trading-center/wechatapplet/get/supplier-order-page params=${param} log ${response.json()} @@ -101,7 +96,7 @@ supplier_get_order_list_search Set Global Variable ${supplier_order_id} supplier_get_order_detail2 - Create Session yytclient ${yytclient} headers=${cloudfactory_supplierheader} + Create Session yytclient ${yytclient} headers=${cloudfactory_supplier_header} ${response} Get On Session yytclient /trading-center/wechatapplet/get/supplier-order-detail/${supplier_order_id} log ${response.json()} Should Be Equal As Numbers 200 ${response.status_code} @@ -111,7 +106,7 @@ supplier_get_order_detail2 Set Global Variable ${supplier_order_totalPrice} supplier_confirm_order - Create Session yytclient ${yytclient} headers=${cloudfactory_supplierheader} + Create Session yytclient ${yytclient} headers=${cloudfactory_supplier_header} ${body} Set Variable {"orderId":"${supplier_order_id}"} ${response} POST On Session yytclient /trading-center/seller/confirm/supplier-order-and-sign ${body.encode("utf-8")} log ${response.json()} diff --git a/018_payable_and_receivable/customer_bill.robot b/018_payable_and_receivable/customer_bill.robot index b7d0963..31a2370 100644 --- a/018_payable_and_receivable/customer_bill.robot +++ b/018_payable_and_receivable/customer_bill.robot @@ -3,11 +3,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{operationpsc_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965324 Authorization=${gettoken_operate_psc} -${pscops} https://api-ops-psc-test.qniao.cn -${yytops} https://api-ops-yyt-test.qniao.cn - *** Test Cases *** operate_get_customer_bill_list Create Session yytops ${yytops} headers=${operationpsc_header} diff --git a/018_payable_and_receivable/payable.robot b/018_payable_and_receivable/payable.robot index 8300fcb..2d88d28 100644 --- a/018_payable_and_receivable/payable.robot +++ b/018_payable_and_receivable/payable.robot @@ -3,11 +3,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{operationpsc_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965324 Authorization=${gettoken_operate_psc} -${pscops} https://api-ops-psc-test.qniao.cn -${yytops} https://api-ops-yyt-test.qniao.cn - *** Test Cases *** operate_get_payable_list Create Session yytops ${yytops} headers=${operationpsc_header} diff --git a/018_payable_and_receivable/receivable.robot b/018_payable_and_receivable/receivable.robot index 984248d..8ae6dd6 100644 --- a/018_payable_and_receivable/receivable.robot +++ b/018_payable_and_receivable/receivable.robot @@ -3,11 +3,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{operationpsc_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965324 Authorization=${gettoken_operate_psc} -${pscops} https://api-ops-psc-test.qniao.cn -${yytops} https://api-ops-yyt-test.qniao.cn - *** Test Cases *** operate_get_receivable_list Create Session yytops ${yytops} headers=${operationpsc_header} diff --git a/019_capacity_market/capacity_commodity.robot b/019_capacity_market/capacity_commodity.robot index d391315..c7ed5de 100644 --- a/019_capacity_market/capacity_commodity.robot +++ b/019_capacity_market/capacity_commodity.robot @@ -3,10 +3,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_customer_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** customer_get_capacity_commodity_list Create Session yytclient ${yytclient} headers=${cloudfactory_customer_header} diff --git a/019_capacity_market/capacity_machines.robot b/019_capacity_market/capacity_machines.robot index c6ba440..f55a94b 100644 --- a/019_capacity_market/capacity_machines.robot +++ b/019_capacity_market/capacity_machines.robot @@ -3,10 +3,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{cloudfactory_customer_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} -${yytclient} https://api-client-yyt-test.qniao.cn - *** Test Cases *** customer_get_machines_list Create Session yytclient ${yytclient} headers=${cloudfactory_customer_header} diff --git a/100_test_data_clear.robot b/100_test_data_clear.robot index 7496f3f..f09abe5 100644 --- a/100_test_data_clear.robot +++ b/100_test_data_clear.robot @@ -4,17 +4,6 @@ Library RequestsLibrary Library Collections Library urllib3 -*** Variables *** -&{operationbackend_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847952999 Authorization=${gettoken_operate} -&{cloudfactory_customer_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965388 Authorization=${getlogintoken_customer} -&{cloudfactory_supplierfocus_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847956666 Authorization=${getlogintoken_supplier_focus} -&{operationpsc_header} Content-Type=application/json;charset=UTF-8 X-APP-ID=503258978847965324 Authorization=${gettoken_operate_psc} -${uecops} https://api-ops-uec-test.qniao.cn -${pscops} https://api-ops-psc-test.qniao.cn -${yytops} https://api-ops-yyt-test.qniao.cn -${yytclient} https://api-client-yyt-test.qniao.cn -${uecclient} https://api-client-uec-test.qniao.cn - *** Test Cases *** database_delete_user_customerclue_customer Connect To Database Using Custom Params pymysql database='uec', user='root', password='password', host='8.135.8.221', port=3306, charset='utf8' diff --git a/datas/000_base.xls b/datas/000_base.xls new file mode 100644 index 0000000000000000000000000000000000000000..ed60fb982e5d090ede5704f0241b024933ce2ba5 GIT binary patch literal 24064 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 fA>h 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

s?R-7Jb|pW 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 literal 0 HcmV?d00001 diff --git a/datas/005_credit_qniao_customer.xls b/datas/005_credit_qniao_customer.xls new file mode 100644 index 0000000000000000000000000000000000000000..7e71a86d36af54b70fdcef4b151ae3c9fc589bd4 GIT binary patch literal 18944 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 Xl0FavfZref-wzjf>IDe@f5ZO(25v9H literal 0 HcmV?d00001 diff --git a/datas/006_credit_password.xls b/datas/006_credit_password.xls new file mode 100644 index 0000000000000000000000000000000000000000..e41b56e013bc3870be7ef4af2c03166e0503a1b8 GIT binary patch literal 18432 zcmeHP30#fY`#<+~t6M~A(W1H~l{PI}Ftmt4QOGt)rA3Hl%A{sAWoayhXvW%LnC$yb zj3N>lL}ZL5NoD89B;x*`=Y4zcz1{o1cj7<)|K~ry|L^3y%X7~2J7vfv zpZ6G75xLNZsE`k04WcGP=fN{ZDrgg81`qiDK`a*2L_*;4Kj9x_f%hP*1yr62L;*xq zh*;<95QPvmAZkKv1FfT#;m528Lq1Be|V8bUOJXbjN=Vkd~E z5Yb;Sis0E&=KUXJwtpK@hmi#Mn?^*WADIgGM3M?M()wTk9>W-e4{RbKUI{6ruB1PG zqp!gkM#m1BAHCaQ*unEi63$8K=?eSe7v`Y6(ub9q;vKoA)t8* zXzouU;TqW*0GT{`P(Jp7*nV1DKC%y^%>>pPPQE5n;4hN0{XnRNSjr|ynMNkU^HgNu z2)51oW7}=`Mfha5pa`yn+=Doldz>BEs5T^0;%za5;aQRzu_ftD93XZk&ZHNiDPxJF4Ao5F4#TV=TlP>g zjKn}w3*%t)gt6I3kq9-82}Y5w@JAKKRSeR(3cxfj=v1hpp4@uS>axk&vM}y^biv-l zn?BQ$%dbShnTKPXwGj9r-oQlPukY?P4KVw|Nip-_Z$9=uZYSFNLC2h5hA zi;k#l`Tw2iJZd$78e*XBOrWQr?C^%BGIU&DQ1tzT_=tQ&M4&;{3$8aP`VTrf%iAn( zLj>I@I)RqThC{$v+31S+1{4miWm=Z&*o<$_ii1YQ+bZZ*)E4 zx{i&mD5nD@zeG+N2bP00j$(dVFLeeV>ivZI33J9DaIHy|EAa=~PjHP%(_>@l{GL>~ ziuG>CVNZ98jy*%OUJ;-#EK_MYaqZenkMt2aOY8s-G+pAiG(N6(sr(YUJ%>Ez9P&7G zRLy(*C1Jr|qn0f7)(}bT^K2x$tRy6>&T`aJcMXNaa_=>A`_Rw@1bNG@alO zi@Olhbabe8s-{KZNa*O;R45e95bBW`*a1m`AK9@^wSSt>m!!3zW2;huy%IgR#>Aqn znV?0{WcJ7)p&iT$`Dwx>av<0Q)nPIU%SU)hPfwRDTs2u}>MS%N3k`)rJaO4d2_6cC zG;i-@39VTudCjn0F`AVHwo)^B5Nr%I2qj6$Z<10ON%DxAgvKEWwlqc(S2s3EAcG_{ zgE-3B7`LAIuwg~(kIQ3*gM$J0sH6-TBtxDdO|Aso&{C7s;@-V`B@9e0%F>uxl%+AX zC`*&nqPR?g$6+VjO_SOQ+W`|8Uu53#&Y?DL4kqI{{Fos~!OWt)m1H*qC#EJr;y9ZY{+?HViBMI}4 zcMf&BKoTQ~*qaTc73x@1AdDpHSX^^ZB8hxQWdkhIj>_BHTT<7Ii_6j&7nh|mE-p)B zT>RzBml8Y_itebSWi*>dUMSlZLjB#nC!0`j(-fRsUZ}1ugp$?v@32&Ue!haGWcT|x z9LWxZVmgSJSeyVef$;%c3^9QN#2(Ta5c-6GVPHU*cf50eI6xBZ($u(+!BbF&#l|D# zI$TEp5r97`Hgjc7zZEJvQPMGPdFGkos0F*R5{Wrf?A8KA{3uVt!1#7v%wK{yOF(dX zAv^P6jNJ-#Tx3AlyFl^bxhwM+T%U@Dux8Zy69* zH#QJPGQ2mdV=LEX`alwoTCPz2u2|Xu=tu#&_!ra zCpx^`#W6z_q~YsCjqnjZBX`rvpP@|;MN2$6iDML{z8<0vF2VImpoMiI|?`hal zpVc^bw@)GC5N{2NkUwc+crNaRN9YhNb72tGEJ#NJc5twzU(5$7kRCL8K zXg8-aEU?Q%c(GZ7LgvOeOi*Cqw*eL=m1fZZe*;|+M?qJW_Mj`K&{^9P3p}u_o_}tM zO$3cEYAF)mU93u^>5Nd8QaxN)^w5^*fdee9dS@vMT2Eee9SI9#EeqIiS6UHRvV28| zlvadPnl4glurYZ&vtbIIRh>9tUzRpTu`e@*zASAFgV+rb`8ke56cBlx z01;E@tQOGEDYd9Oi$$H3S`?>fsFyx$+$mTTn}xhZO%*K4GzAN&IHl6DwK6lM(n+D+ z5Sn}ZV1qUXXk{FXO}i_X8r@31HCif_nsG4;;;vk3Ht5burDmY@VFXjCF6@5ftE-Db zburzLKJiq9z^+FgqN@S~)7@AQFXgsl>&fht+D;1HL%HqPpzW2~j)B&PGiU|dVat(M z+)+VsrnOkWNv=|VWNV1slu9Rs{tThHCn#*t&H$~9gK6Wv6&1%$SYB}#1;ud@Mvq;6 zlq=5Gr@JXtTng>2TyZw&?n)J>p`(NbBuZvfFrak7%QE4Gw##HvkQN-EBEZu|Lgo&+ z=Yw}9;GX!jxR@z1-MI7M`68W1no|#GLJDni>N0~gcv}DwH?n1OQqO}Ur$$bQNpwn? z60cP@So4%f+ovk+=jk~&JfjM1`;FgwerLg-q;H>Hw`V z4teTY3t}!f%{%mbhQlV4&A$)mblM@lszm=meTre}{)M`C2A)kCn%21@Cv(SvTcT?R z>?M;vlSQ>pSU z$&ksK77x}39GRXSS2EYgFWL2E`}}7^t*kz)do$vF z?Wp8kA(w_k`q!w1o|?K&tXXhUlsC1$M{0K`n;q9pUOyODAFi@_Y{~1;_pv9&yuCv7 z1iQ=gvg-HkxpVuOyXJP@Iq#k`8ooIGWL2hTQ^KyVZcpBv-e#BY5%F8&@0{!W^c;_= z)x0@l{Oh=cDPKP_7&kj{Mv~T@txsP+bc9?kUFxT4g-z*xs35CiS&qgA^&u$*L(TUe z)T|BA3+X#1Y|;XafSQe81YA-%qfUZ-7FZ4J-Q(hOfokxHF#pmOy3ca__k>(oXPTW| z+ZZgm_WjlDHA1h_=#mp_EGl&ZcI^spdh_H<8v$oIMnpZEXuYB%Z`>Vq# zl^^u{i^nRT^*d=-U(>@j>$1WaFxH3Yw{+7+{ zK9;}bWS_0H`z8M}Z=k4KQb*qb2lQ8O`1W?64Le6PJm0f$j@Hc0vzvs&?X$063S3`Y zlQ^ftB()~((#n2`UbQplKWd|~a*=b)IPYS=!|_wU8og`DD-)6V)BWa`Q^$8cVl{mE z#lFQW=0Dyu(X;=+2PfMNG+te~__W?2z0^Z1rxh(;alG%<>1S02d2W1XRy6YHMT1!d z>+-DgV`gr)aeI2U#=UI&Thrg_1(7>kMUR(_v$5(u{Mf&YZl6ysxl>(yB(>eh;%{`H zdfQ&^-8~>7s#5=vH!4bJtX_FrFK`=w>+@k7HfO|ayt&}fnVKyXHTlVl0z<8` z6ZZ|QJ6mUFJznqL`kobasd2|9?!0;ahc8}**e)1t*!_#;;)SRCC21vZ``u^w@UC$W zf11|xAX#OQwa=K6wS`Yi`&b)YT@-8+>fbq~QGdXigg05X0cSEFTj^(oG1Q(9~{LhspaV*=1PhJYTSB+2?Ln&qwan+Z*$KNB50>$rrBA zI{N*~ul)BJ>YJX{`&Xx(`Nw|QaNgBdF<|RKFd9Ic7tN+lDk!Wt$#n zX>!x#(aoR|HO&IyoL`LLtH z`SSY>-`+eBek}O%hR-gznB)&Q==@`c_VaE89UHdOFZyz+cKM)wH@lCwO5e2PtMKdQ zE7lm@^$5K3+F;mq&xoCiHfy(8Hpgte zYIf z)vBT?haWHU8D=nK{*7MIyCY^TO7MK5KVeCL?O>E0W2e`K z#Ut-qZrJF1w&2o$hOg7sy;#kgaoXzmcRPOIL$?bW*nT?;DgT!K|*+iZWu%N=)pdB>Uu+Rk0; zH-^-&>G6kAZv5iTzx<(YwPk;wMTL78{-hD%y{>Okn4agEZ^m2wmU8aW*NqvD@#-TN zf7_$aD*sMPM>dpX>2536K6%$+_li}f?ssf&_?^v9`Zf2Pj^#hb#U(9s9`T);L)tFa zRdvQ83EGXS{VzK^EH2*l$WGk*QTFzP&}BDi|PHZ+UjXaIJ9l>U4Je{iJ-rwoiowk%Y>nL_5~ zLcJtBloz(XFod98TNw||lj(p0T0xX;4$3&OsnG#BOoLEsQs`t~kmOvf`W4Nj&`UeK>sdl1e=drhW!Lk@`Hwl?20=C&}zK{!K=HqWt@mEXCRmjH{it9$`qKO&%;VFN&~Ls{wWspa>- z_^mF^o3ZD?-(=%E*Z04e_Mh<2u>g)DJT=mO6~6+;3Y`BD@~*uB-(lXYKmG8FQgD#M z=HD^>Z{JZKrXRcuk5K-aTKX=b%cYa%e3Ep@yF4HLPT|3$l#j{Be%Hn}0&*~ShEM*T zkyHN8-pCNV$Xy3d4r|#NoHc{gcjFr^Ap*{8i8l=dVkU36-;5!Vml6QIm09jfc zK7h`eR1egW1&h0zx%OpaP@ML*B|>6vv+ss8&<;aXhluF|AVSCph6~oqXo%>)@eonY z42alYWkbZ7`U;3lz&>v`FyTT_08Hj^$2yRH2-P+W^avt?uUt7R@(~f=Q zD43`YCn6FAUvbC6#4`$}m&yW{{wN>6;zC89lZkfja?szQai>4fROM)>8`=T&N1NC} zgph%@LV3I(LhTVBi1IpPx+?L9>2MS^$&R7^2Y`?J9^DI2WqUh-{L6sj?>rRtZwen< z{@+xr1m>S!KKcQMCWtuxV?h7GDw>8b;7>E)g8nlHBF+_dH@_nd+fV>_eGvG5B6w3Y zcvBQ``oVo7w8m&y3dKMQ24^EKlr)_{D%|$;LinCP=2t6@~5u8@a_S5{Na!pS5__%`@xed{JF#Z|8w{+ DV1Fbj literal 0 HcmV?d00001 diff --git a/datas/007_paper_variety_management.xls b/datas/007_paper_variety_management.xls new file mode 100644 index 0000000000000000000000000000000000000000..b3267ea451a7551c75b31a6f54fb92b985b329c8 GIT binary patch literal 20992 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 Bt%Cpn literal 0 HcmV?d00001 diff --git a/datas/009_product_manage.xls b/datas/009_product_manage.xls new file mode 100644 index 0000000000000000000000000000000000000000..7a3d3df5f75bce8e12d50ffe8137c28db7a61920 GIT binary patch literal 17920 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 C{OKA1 literal 0 HcmV?d00001 diff --git a/datas/014_customer_shipping_address.xls b/datas/014_customer_shipping_address.xls new file mode 100644 index 0000000000000000000000000000000000000000..6ce372282e96dd90c5ffb70c1b8ca151107cd018 GIT binary patch literal 18944 zcmeHP30xG%((hdsSU?oykV9ZO1mu!a5TgqSMg>psiUOi8f}$8O2#EwdhzBSri6=p$ z!TY`yjiM-`7!^fP(d~L@~UQbc9-4ReIzg6_xtj`*Gtb#S9krps=B(TyJv=r z7xeG`w9D)skqbSE8u`?$MKomS9Jt0v1wBHn-~!X1nwy(xA|Y`3-|#oGz(_nn5&& z*b$-yL`#V1GZ?Mm+Eyn0H!|ISgs4MEBK)Qi0SO^f;G9I#pfy?_jKO0VLvVpjz{evY z$EhRfO`pWa^I@wG)n4NWAQ^y;24OhVoXyP9@wkKQ;Q$Ls7&4S-A;L#Q9eK9;hhD6qPKtHUYnEhkhz4~2dxT4N@=D-H$bE>T$yAV& z6GO&>nDHQv;D0^@Q8L7EP=@1R;2vly#g+$1r*978BJlOP-hf~y!t%Rzox z&DdF_KBA1dJ9wwLJToISd#!XXU3Uo7EKtR+N&+d+U1}~$$lGR|qcY*R0O=e^QuH^i zqvJr!R$dt$QQ6A>C(}99S^zb~K--zXNI}`*9ZhBExVoU|dkF~;1PBOEi)t5KT~PGz z_4SwOEYl&pE)<8oHI*F-hz(3 zSq*kj4B;q>#WrAqE=7~sIfIP0Fk9rN^B2p3po?k3mJ2K@;VL5|L$aLJW}#`a(D*Dg z6bkX0D^^JGP$;Acg((u6SSWeTa9m(Cs|ahQX7V7|*=P_-lCobVwK9?v5Df`Ui6l5u zFp_wBu}K02BtZ<~DraNdkmABN7Og)nni&oy47hV8WymC%@(k&6HQ+XvhNKmD@7^t8 zU|La@#B^`K?#Eu zRNL1;!98dda)4EinAsAa)c8 zJv?}N;bsjJ7)h8ko|UN639=YTnuTm2tx(6F0%0W4#OlOBg(UI=l>@Ly2P&aZC~0fP z#bs%Xi_6j&7nh|mF8=!UYY83-MGsWcI>hFY7s|1PP=EF4$tKkMbOk4u7pij$p=7oF zD=bx1RHR@j*slEVPHU*G@g}!xIh-| z($sw+lcSξ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 Z{vC-QNEHJ4y&=~ZejZd00g(Tv;h(W8L<0Z- literal 0 HcmV?d00001 diff --git a/datas/015_customer_create_order.xls b/datas/015_customer_create_order.xls new file mode 100644 index 0000000000000000000000000000000000000000..383659fc5f14c9f93398b90ff02944bbd729b3f2 GIT binary patch literal 18944 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 XcyI9aE&z81iZCdHTyXLG|2g~@hlFFS literal 0 HcmV?d00001 diff --git a/datas/016_customer_enquiry_create_order.xls b/datas/016_customer_enquiry_create_order.xls new file mode 100644 index 0000000000000000000000000000000000000000..b07512d75c3056d122e9a9a4ec90600623e06e09 GIT binary patch literal 21504 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 literal 0 HcmV?d00001 diff --git a/datas/017_create_supplier_order_batch.xls b/datas/017_create_supplier_order_batch.xls new file mode 100644 index 0000000000000000000000000000000000000000..d475fc78fa2b070c09100d1031dad98df5a013cf GIT binary patch literal 18944 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 literal 0 HcmV?d00001 diff --git a/datas/018_payable_receivable.xls b/datas/018_payable_receivable.xls new file mode 100644 index 0000000000000000000000000000000000000000..4e39b53076c894120c00bd00b08e30bb50bf1700 GIT binary patch literal 19456 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 RM3CDPO0nD%&i~HozW|&#Y_k9W literal 0 HcmV?d00001 -- 2.26.2