From 66369869049f4f3728d2f3317cb3245c0c0a9a9e Mon Sep 17 00:00:00 2001 From: "licy@guangda.work" Date: Thu, 27 Apr 2023 18:27:23 +0800 Subject: [PATCH] admin test --- resources/lang/zh_cn.zip | Bin 0 -> 46608 bytes .../dusktest/RunnerTestCase/Run_Case.php | 11 +++- .../dusktest/data/admin/cre_product_page.php | 6 +- .../dusktest/data/admin/customer_page.php | 2 +- .../dusktest/data/catalog/checkout_page.php | 2 +- .../dusktest/page/admin/AdminSignOutTest.php | 2 +- .../dusktest/page/admin/DelCustomerTest.php | 4 +- .../dusktest/page/admin/EditCusGroupTest.php | 2 +- .../dusktest/page/admin/GoCatalogTest.php | 2 +- .../page/admin/LanguageSwitchTest.php | 2 +- .../dusktest/page/combine/CancelOrderTest.php | 6 +- .../page/combine/DisableProductTest.php | 59 ++++++++++++++++++ .../page/combine/EnableProductTest.php | 59 ++++++++++++++++++ .../dusktest/page/front/CartCheckoutTest.php | 2 +- .../page/front/ChangePayMethodTest.php | 53 ++++++++++++++++ 15 files changed, 197 insertions(+), 15 deletions(-) create mode 100644 resources/lang/zh_cn.zip create mode 100644 tests/Browser/dusktest/page/combine/DisableProductTest.php create mode 100644 tests/Browser/dusktest/page/combine/EnableProductTest.php create mode 100644 tests/Browser/dusktest/page/front/ChangePayMethodTest.php diff --git a/resources/lang/zh_cn.zip b/resources/lang/zh_cn.zip new file mode 100644 index 0000000000000000000000000000000000000000..ecdaa7a931aecedbf8ed597993c62f0e441f30cd GIT binary patch literal 46608 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 J-bee^{{c6Ej41#B literal 0 HcmV?d00001 diff --git a/tests/Browser/dusktest/RunnerTestCase/Run_Case.php b/tests/Browser/dusktest/RunnerTestCase/Run_Case.php index c045e4f4..0140528a 100644 --- a/tests/Browser/dusktest/RunnerTestCase/Run_Case.php +++ b/tests/Browser/dusktest/RunnerTestCase/Run_Case.php @@ -10,7 +10,7 @@ use PHPUnit\TextUI\DefaultResultPrinter; $suite = new TestSuite(); // 向测试套件中添加测试用例 -//后台 +//前台 $suite->addTestFile('.\tests\Browser\dusktest\page\front\RegisterFirst.php');//先注册一个账户 $suite->addTestFile('.\tests\Browser\dusktest\page\front\RegisterTest.php');//场景注册 $suite->addTestFile('.\tests\Browser\dusktest\page\front\LoginTest.php'); //前台登录场景 @@ -21,6 +21,9 @@ use PHPUnit\TextUI\DefaultResultPrinter; $suite->addTestFile('.\tests\Browser\dusktest\page\front\RemoveWishlistTest.php');//移除喜欢 $suite->addTestFile('.\tests\Browser\dusktest\page\front\WishlistTest.php');//加入喜欢 $suite->addTestFile('.\tests\Browser\dusktest\page\front\EditUserInfo.php');//修改个人信息 + $suite->addTestFile('.\tests\Browser\dusktest\page\front\CartCheckoutTest.php');//从购物车结账 + $suite->addTestFile('.\tests\Browser\dusktest\page\front\ChangePayMethodTest.php');//下单时更改支付方式 + $suite->addTestFile('.\tests\Browser\dusktest\page\front\OrderTest.php');//下单 //后台 $suite->addTestFile('.\tests\Browser\dusktest\page\admin\AdminLoginTest.php'); //后台登录 $suite->addTestFile('.\tests\Browser\dusktest\page\admin\AdminSignOutTest.php'); //后台退出 @@ -44,10 +47,14 @@ use PHPUnit\TextUI\DefaultResultPrinter; //前后台联测 - $suite->addTestFile('.\tests\Browser\dusktest\page\combine\AlterOrderStationTest.php');//商订单状态修改 + $suite->addTestFile('.\tests\Browser\dusktest\page\combine\AlterOrderStationTest.php');//订单状态修改 已支付-已发货-一已完成 + $suite->addTestFile('.\tests\Browser\dusktest\page\combine\CancelOrderTest.php');//取消商品订单 $suite->addTestFile('.\tests\Browser\dusktest\page\combine\CloseVisiterCheckoutTest.php');//禁用游客结账 $suite->addTestFile('.\tests\Browser\dusktest\page\combine\OpenVisiterCheckoutTest.php');//开启游客结账 $suite->addTestFile('.\tests\Browser\dusktest\page\combine\CreateCategoriesTest.php');//添加商品分类 + $suite->addTestFile('.\tests\Browser\dusktest\page\combine\EnableProductTest.php');//启用商品 + $suite->addTestFile('.\tests\Browser\dusktest\page\combine\DisableProductTest.php');//禁用商品 + // 运行测试套件 $result = $suite->run(); // 输出测试结果 diff --git a/tests/Browser/dusktest/data/admin/cre_product_page.php b/tests/Browser/dusktest/data/admin/cre_product_page.php index 083f0527..9f5194e4 100644 --- a/tests/Browser/dusktest/data/admin/cre_product_page.php +++ b/tests/Browser/dusktest/data/admin/cre_product_page.php @@ -8,7 +8,11 @@ const product_top = [ "origin_price"=>"skus[0][origin_price]",//原价 "cost_price"=>"skus[0][cost_price]",//成本价 "quantity"=>"skus[0][quantity]",//数量 + "Enable"=>"#active-1", + "Disable"=>"#active-0", "save_btn"=>"#content > div.page-title-box.py-1.d-flex.align-items-center.justify-content-between > div > button",//保存 - +]; +const product_assert = [ + "Disable_text" =>".text-danger",//商品禁用后显示的文本class ]; diff --git a/tests/Browser/dusktest/data/admin/customer_page.php b/tests/Browser/dusktest/data/admin/customer_page.php index d8f3454f..839b32f6 100644 --- a/tests/Browser/dusktest/data/admin/customer_page.php +++ b/tests/Browser/dusktest/data/admin/customer_page.php @@ -37,7 +37,7 @@ const customer_group = [ //创建客户组 "cre_cus_group"=>"#customer-app > div.card-body > div.d-flex.justify-content-between.mb-4 > button", //编辑客户组 - "edit_cus_group" =>"#customer-app > div.card-body > div.table-push > table > tbody > tr:nth-child(1) > td:nth-child(6) > button.btn.btn-outline-secondary.btn-sm", + "edit_cus_group" =>".btn.btn-outline-secondary.btn-sm", //删除客户组 "del_cus_group" =>"#customer-app > div.card-body > div.table-push > table > tbody > tr:nth-child(1) > td:nth-child(6) > button.btn.btn-outline-danger.btn-sm.ml-1", "get_assert"=>"#customer-app > div.card-body > div.table-push > table > tbody > tr:nth-child(1) > td:nth-child(2)", diff --git a/tests/Browser/dusktest/data/catalog/checkout_page.php b/tests/Browser/dusktest/data/catalog/checkout_page.php index 80202696..3cb78d09 100644 --- a/tests/Browser/dusktest/data/catalog/checkout_page.php +++ b/tests/Browser/dusktest/data/catalog/checkout_page.php @@ -9,6 +9,6 @@ const checkout = [ //订单号 'order_num'=>'.fw-bold', 'view_order'=>'View Order ', - /// + 'method_pay'=>'.radio-line-item', ]; diff --git a/tests/Browser/dusktest/page/admin/AdminSignOutTest.php b/tests/Browser/dusktest/page/admin/AdminSignOutTest.php index d5224e00..27ec0d0d 100644 --- a/tests/Browser/dusktest/page/admin/AdminSignOutTest.php +++ b/tests/Browser/dusktest/page/admin/AdminSignOutTest.php @@ -31,7 +31,7 @@ class AdminSignOutTest extends DuskTestCase ->press(admin_login['login_btn']) ->pause(2000) //2.退出 - ->clickLink(admin_top['root']) + ->click(admin_top['root']) ->pause(2000) ->click(admin_top['sign_out']) ->pause(10000) diff --git a/tests/Browser/dusktest/page/admin/DelCustomerTest.php b/tests/Browser/dusktest/page/admin/DelCustomerTest.php index 062f81e7..25ed7cc2 100644 --- a/tests/Browser/dusktest/page/admin/DelCustomerTest.php +++ b/tests/Browser/dusktest/page/admin/DelCustomerTest.php @@ -22,7 +22,7 @@ class DelCustomerTest extends DuskTestCase //场景1 email不合法 - public function testEditProduct() + public function testDelCustomer() { $this->browse(function (Browser $browser) @@ -34,7 +34,7 @@ class DelCustomerTest extends DuskTestCase ->press(admin_login['login_btn']) ->pause(2000) //2.点击客户管理 - ->clickLink(admin_top['mg_customers']); + ->click(admin_top['mg_customers']); $customer_text=$browser->text(customer_list['get_assert']); echo $customer_text; $browser->press(customer_list['del_customer']) diff --git a/tests/Browser/dusktest/page/admin/EditCusGroupTest.php b/tests/Browser/dusktest/page/admin/EditCusGroupTest.php index 1c35ae75..cb272880 100644 --- a/tests/Browser/dusktest/page/admin/EditCusGroupTest.php +++ b/tests/Browser/dusktest/page/admin/EditCusGroupTest.php @@ -32,7 +32,7 @@ class EditCusGroupTest extends DuskTestCase ->pause(3000) //4.点击客户组 ->clickLink(customer_left['customer_group']) - //5.点击创建客户组 + //5.点击编辑客户组 ->press(customer_group['edit_cus_group']) //4.填写客户组信息 ->type(cre_cus_group['ch_group_name'], alter_cus_group_info['ch_group_name']) diff --git a/tests/Browser/dusktest/page/admin/GoCatalogTest.php b/tests/Browser/dusktest/page/admin/GoCatalogTest.php index 8f8110df..6f4ce4b4 100644 --- a/tests/Browser/dusktest/page/admin/GoCatalogTest.php +++ b/tests/Browser/dusktest/page/admin/GoCatalogTest.php @@ -31,7 +31,7 @@ class GoCatalogTest extends DuskTestCase ->press(admin_login['login_btn']) ->pause(2000) //2.去往前台 - ->clicklink(admin_top['root']) + ->click(admin_top['root']) ->pause(3000) ->click(admin_top['go_catalog']) ->pause(2000) diff --git a/tests/Browser/dusktest/page/admin/LanguageSwitchTest.php b/tests/Browser/dusktest/page/admin/LanguageSwitchTest.php index cdaf9cea..9e8293a9 100644 --- a/tests/Browser/dusktest/page/admin/LanguageSwitchTest.php +++ b/tests/Browser/dusktest/page/admin/LanguageSwitchTest.php @@ -15,7 +15,7 @@ class LanguageSwitchTest extends DuskTestCase * A basic browser test example. * @return void */ - public function testGoVip() + public function testLanguageSwitch() { $this->browse(function (Browser $browser) diff --git a/tests/Browser/dusktest/page/combine/CancelOrderTest.php b/tests/Browser/dusktest/page/combine/CancelOrderTest.php index 5179c25d..d9698e50 100644 --- a/tests/Browser/dusktest/page/combine/CancelOrderTest.php +++ b/tests/Browser/dusktest/page/combine/CancelOrderTest.php @@ -36,7 +36,7 @@ class CancelOrderTest extends DuskTestCase ->press(admin_login['login_btn']) ->pause(2000) //去往前台 - ->clicklink(admin_top['root']) + ->click(admin_top['root']) ->pause(3000) ->click(admin_top['go_catalog']) ->pause(2000) @@ -67,7 +67,7 @@ class CancelOrderTest extends DuskTestCase //打印订单号 echo $order_num; $browser->clickLink(checkout['view_order']) - //进入后台,修改订单状态为已支付 + //进入后台,修改订单状态为已取消 ->driver->switchTo()->window($browser->driver->getWindowHandles()[0]); //点击订单管理按钮 $browser->click(admin_top['mg_order']) @@ -81,7 +81,7 @@ class CancelOrderTest extends DuskTestCase //点击状态栏下拉按钮 ->pause(2000) ->press(order_details['pull_btn']) - //修改状态为已支付 + //修改状态为已取消 ->pause(2000) ->click(order_details['cancel']) ->press(order_details['alter_btn']) diff --git a/tests/Browser/dusktest/page/combine/DisableProductTest.php b/tests/Browser/dusktest/page/combine/DisableProductTest.php new file mode 100644 index 00000000..91bcd2e8 --- /dev/null +++ b/tests/Browser/dusktest/page/combine/DisableProductTest.php @@ -0,0 +1,59 @@ +browse(function (Browser $browser) + { + $browser->visit(admin_login['login_url']) + //登录 + ->type(admin_login['login_email'], admin_true_login['email']) + ->type(admin_login['login_pwd'], admin_true_login['password']) + ->press(admin_login['login_btn']) + ->pause(2000) + ->click(admin_top['mg_product']); + $product1_text=$browser->text(products_top['get_name']); + echo $product1_text; + //编辑商品 + $browser->press(products_top['edit_product']) + //启用商品 + ->click(product_top['Disable']) + //点击保存 + ->press(product_top['save_btn']) + ->pause(3000) + //点击商品,跳转前台 + ->clickLink($product1_text) + ->pause(2000) + ->driver->switchTo()->window($browser->driver->getWindowHandles()[1]); + //断言是否有下架提示 + $browser->assertVisible(product_assert['Disable_text']) + ->pause(3000) + + + ; + }); + } +} diff --git a/tests/Browser/dusktest/page/combine/EnableProductTest.php b/tests/Browser/dusktest/page/combine/EnableProductTest.php new file mode 100644 index 00000000..27fd6088 --- /dev/null +++ b/tests/Browser/dusktest/page/combine/EnableProductTest.php @@ -0,0 +1,59 @@ +browse(function (Browser $browser) + { + $browser->visit(admin_login['login_url']) + //登录 + ->type(admin_login['login_email'], admin_true_login['email']) + ->type(admin_login['login_pwd'], admin_true_login['password']) + ->press(admin_login['login_btn']) + ->pause(2000) + ->click(admin_top['mg_product']); + $product1_text=$browser->text(products_top['get_name']); + echo $product1_text; + //编辑商品 + $browser->press(products_top['edit_product']) + //启用商品 + ->click(product_top['Enable']) + //点击保存 + ->press(product_top['save_btn']) + ->pause(3000) + //点击商品,跳转前台 + ->clickLink($product1_text) + ->driver->switchTo()->window($browser->driver->getWindowHandles()[1]); + //断言页面是否有购买按钮 + $browser->assertVisible(product['product_1']) + ->pause(3000) + + + ; + }); + } +} diff --git a/tests/Browser/dusktest/page/front/CartCheckoutTest.php b/tests/Browser/dusktest/page/front/CartCheckoutTest.php index f97c484c..df95e10c 100644 --- a/tests/Browser/dusktest/page/front/CartCheckoutTest.php +++ b/tests/Browser/dusktest/page/front/CartCheckoutTest.php @@ -39,7 +39,7 @@ class CartCheckoutTest extends DuskTestCase ->press(product['add_cart']) ->pause(3000) //6.点击购物车按钮 - ->clickLink(index_cart['cart_icon']) + ->click(index_cart['cart_icon']) ->pause(3000) //7.点击结账按钮 ->press(index_cart['cart_Checkout']) diff --git a/tests/Browser/dusktest/page/front/ChangePayMethodTest.php b/tests/Browser/dusktest/page/front/ChangePayMethodTest.php new file mode 100644 index 00000000..89e46912 --- /dev/null +++ b/tests/Browser/dusktest/page/front/ChangePayMethodTest.php @@ -0,0 +1,53 @@ +browse(function (Browser $browser) + { + $browser->visit(login['login_url']) + //1.用户登录 + ->type(login['login_email'], true_login['email']) + ->type(login['login_pwd'], true_login['password']) + ->press(login['login_btn']) + ->pause(5000) + //当前网址断言 + ->assertPathIs(account['url']) + //2.点击home跳转到首页 + ->click(account['go_index']) + //3.向下滑动页面直到找到元素 + ->scrollIntoView(index['product_img']) + ->pause(2000) +//点击要购买的商品 + ->press(index['product_img']) + //4.点击购买按钮 + ->press(product['product_1']) + ->pause(5000) +//点击第二种支付方式 + + ->elements(checkout['method_pay'])[1]->click(); + $browser->pause(5000) + //5.点击确认按钮 + ->press(checkout['submit']) + ->pause(5000) + //6.断言 + ->assertSee(checkout['assert']); + }); + } +}