示例#1
0
class TestProductDetailPage():

    @pytest.fixture(autouse=True)
    def setup_class(self):
        self.dp = DressesPage(self.driver)
        self.cdp = ChiffonDressPage(self.driver)
        self.ast = AssertStatus()

    def test_chiffon_dress_social_media_buttons(self):
        result_1 = self.dp.navigate_to_dresses_page()
        self.ast.collect_result(result_1, "Dresses Page Title Verification")

        self.dp.click_chiffon_dress_link()
        result_2 = self.cdp.verify_chiffon_dress_page_title()
        self.ast.collect_result(
            result_2, "Chiffon Dress Page Title Verification")

        self.cdp.set_chiffon_dress_main_window_attribute()

        self.cdp.click_chiffon_dress_twitter_button()
        result_3 = self.cdp.verify_social_media_button("twitter.com")
        self.ast.collect_result(result_3, "Twitter Button Verification")

        self.cdp.click_chiffon_dress_facebook_button()
        result_4 = self.cdp.verify_social_media_button("facebook.com")
        self.ast.collect_result(result_4, "Facebook Button Verification")

        self.cdp.click_chiffon_dress_google_button()
        result_5 = self.cdp.verify_social_media_button("google.com")
        self.ast.collect_result(result_5, "Google Button Verification")

        self.cdp.click_chiffon_dress_pinterest_button()
        result_6 = self.cdp.verify_social_media_button("pinterest.com")
        self.ast.determine_result(result_6, "Pinterest Button Verification",
                                  "test_chiffon_dress_social_media_buttons")

    def test_chiffon_dress_product_info(self):
        result_1 = self.dp.navigate_to_dresses_page()
        self.ast.collect_result(result_1, "Dresses Page Title Verification")

        self.dp.click_chiffon_dress_link()
        result_2 = self.cdp.verify_chiffon_dress_page_title()
        self.ast.collect_result(
            result_2, "Chiffon Dress Page Title Verification")

        result_3 = self.cdp.verify_chiffon_dress_item_name()
        self.ast.collect_result(result_3, "Item Name Verification")

        result_4 = self.cdp.verify_chiffon_dress_product_model()
        self.ast.collect_result(result_4, "Product Model Verification")

        result_5 = self.cdp.verify_chiffon_dress_product_condition()
        self.ast.collect_result(result_5, "Product Condition Verification")

        result_6 = self.cdp.verify_chiffon_dress_product_description()
        self.ast.collect_result(result_6, "Product Description Verification")

        result_7 = self.cdp.verify_chiffon_dress_data_sheet()
        self.ast.collect_result(result_7, "Data Sheet Verification")

        result_8 = self.cdp.verify_chiffon_dress_brand_info()
        self.ast.determine_result(result_8, "Dress Brand Info Verification",
                                  "test_chiffon_dress_product_info")

    def test_chiffon_dress_review_link(self):
        result_1 = self.dp.navigate_to_dresses_page()
        self.ast.collect_result(result_1, "Dresses Page Title Verification")

        self.dp.click_chiffon_dress_link()
        result_2 = self.cdp.verify_chiffon_dress_page_title()
        self.ast.collect_result(
            result_2, "Chiffon Dress Page Title Verification")

        self.cdp.click_chiffon_dress_review_link()
        result_3 = self.cdp.verify_chiffon_dress_review_popup()
        self.ast.determine_result(result_3, "Review Pop-up Verification",
                                  "test_chiffon_dress_review_link")
        self.cdp.click_chiffon_dress_review_cancel_link()

    @pytest.mark.parametrize(
        "title, comment, title_error_message, comment_error_message",
        get_csv_data("review_test_data.csv"))
    def test_invalid_chiffon_dress_review(
            self, title, comment, title_error_message, comment_error_message):
        result_1 = self.dp.navigate_to_dresses_page()
        self.ast.collect_result(result_1, "Dresses Page Title Verification")

        self.dp.click_chiffon_dress_link()
        result_2 = self.cdp.verify_chiffon_dress_page_title()
        self.ast.collect_result(
            result_2, "Chiffon Dress Page Title Verification")

        self.cdp.click_chiffon_dress_review_button()
        self.cdp.enter_chiffon_dress_review_info(title, comment)
        result_3 = (self.cdp.verify_chiffon_dress_review_error_message(
            title_error_message, comment_error_message))
        self.ast.determine_result(
            result_3, "Review Error Messages Verification",
            "test_invalid_chiffon_dress_review")
        self.cdp.click_chiffon_dress_review_cancel_link()

    def test_valid_chiffon_dress_review(self):
        result_1 = self.dp.navigate_to_dresses_page()
        self.ast.collect_result(result_1, "Dresses Page Title Verification")

        self.dp.click_chiffon_dress_link()
        result_2 = self.cdp.verify_chiffon_dress_page_title()
        self.ast.collect_result(
            result_2, "Chiffon Dress Page Title Verification")

        self.cdp.click_chiffon_dress_review_button()
        result_3 = self.cdp.click_chiffon_dress_review_star_rating()
        self.ast.collect_result(result_3, "Review Star Ratings Verification")

        self.cdp.enter_chiffon_dress_review_info()
        result_4 = self.cdp.verify_chiffon_dress_review_success_message()
        self.ast.determine_result(
            result_4, "Review Success Message Verification",
            "test_valid_chiffon_dress_review")
        self.cdp.click_chiffon_dress_review_ok_button()

    @pytest.mark.parametrize(
        "email_name, email_address", get_csv_data("email_test_data.csv"))
    def test_invalid_chiffon_dress_email(self, email_name, email_address):
        result_1 = self.dp.navigate_to_dresses_page()
        self.ast.collect_result(result_1, "Dresses Page Title Verification")

        self.dp.click_chiffon_dress_link()
        result_2 = self.cdp.verify_chiffon_dress_page_title()
        self.ast.collect_result(
            result_2, "Chiffon Dress Page Title Verification")

        self.cdp.click_chiffon_dress_email_link()
        self.cdp.enter_chiffon_dress_email_info(email_name, email_address)
        result_3 = self.cdp.verify_chiffon_dress_email_error_message()
        self.ast.determine_result(result_3, "Email Error Message Verification",
                                  "test_invalid_chiffon_dress_email")
        self.cdp.click_chiffon_dress_email_cancel_link()

    def test_valid_chiffon_dress_email(self):
        result_1 = self.dp.navigate_to_dresses_page()
        self.ast.collect_result(result_1, "Dresses Page Title Verification")

        self.dp.click_chiffon_dress_link()
        result_2 = self.cdp.verify_chiffon_dress_page_title()
        self.ast.collect_result(
            result_2, "Chiffon Dress Page Title Verification")

        self.cdp.click_chiffon_dress_email_link()
        self.cdp.enter_chiffon_dress_email_info()
        result_3 = self.cdp.verify_chiffon_dress_email_success_message()
        self.ast.determine_result(
            result_3, "Email Succes Message Verification",
            "test_valid_chiffon_dress_email")
        self.cdp.click_chiffon_dress_email_ok_button()

    def test_chiffon_dress_print_section(self):
        result_1 = self.dp.navigate_to_dresses_page()
        self.ast.collect_result(result_1, "Dresses Page Title Verification")

        self.dp.click_chiffon_dress_link()
        result_2 = self.cdp.verify_chiffon_dress_page_title()
        self.ast.collect_result(
            result_2, "Chiffon Dress Page Title Verification")

        result_3 = self.cdp.verify_chiffon_dress_print_link()
        self.ast.determine_result(result_3, "Print Link Verification",
                                  "test_chiffon_dress_print_section")

    def test_chiffon_dress_wishlist_section(self):
        result_1 = self.dp.navigate_to_dresses_page()
        self.ast.collect_result(result_1, "Dresses Page Title Verification")

        self.dp.click_chiffon_dress_link()
        result_2 = self.cdp.verify_chiffon_dress_page_title()
        self.ast.collect_result(
            result_2, "Chiffon Dress Page Title Verification")

        self.cdp.click_chiffon_dress_wishlist_link()
        result_3 = self.cdp.verify_chiffon_dress_wishlist_success_message()
        self.ast.determine_result(
            result_3, "Wishlist Success Message Verification",
            "test_chiffon_dress_wishlist_section")
        self.cdp.click_chiffon_dress_wishlist_close_link()

    def test_chiffon_dress_image_selection(self):
        result_1 = self.dp.navigate_to_dresses_page()
        self.ast.collect_result(result_1, "Dresses Page Title Verification")

        self.dp.click_chiffon_dress_link()
        result_2 = self.cdp.verify_chiffon_dress_page_title()
        self.ast.collect_result(
            result_2, "Chiffon Dress Page Title Verification")

        self.cdp.scroll_to_chiffon_dress_thumbnails()

        result_3 = self.cdp.verify_selected_chiffon_dress_thumbnail()
        self.ast.determine_result(result_3, "Image Match Verification",
                                  "test_chiffon_dress_image_section")

    def test_chiffon_dress_product_details(self):
        result_1 = self.dp.navigate_to_dresses_page()
        self.ast.collect_result(result_1, "Dresses Page Title Verification")

        self.dp.click_chiffon_dress_link()
        result_2 = self.cdp.verify_chiffon_dress_page_title()
        self.ast.collect_result(
            result_2, "Chiffon Dress Page Title Verification")

        result_3 = self.cdp.verify_chiffon_dress_discount_price()
        self.ast.collect_result(result_3, "Dress Discount Price Verification")

        result_4 = self.cdp.verify_chiffon_dress_quantity()
        self.ast.collect_result(
            result_4, "Chiffon Dress Quantity Value Verification")

        result_5 = self.cdp.verify_selected_chiffon_dress_size()
        self.ast.collect_result(
            result_5, "Chiffon Dress Selected Size Verification")

        result_6 = self.cdp.verify_selected_chiffon_dress_color()
        self.ast.collect_result(
            result_6, "Chiffon Dress Selected Color Verification")

        result_7 = self.cdp.verify_chiffon_dress_quantity_error_message("a")
        self.ast.determine_result(
            result_7, "Chiffon Dress Quantity Error Message Verification",
            "test_chiffon_dress_product_details")

    def test_chiffon_dress_popup_cart_details(self):
        result_1 = self.dp.navigate_to_dresses_page()
        self.ast.collect_result(result_1, "Dresses Page Title Verification")

        self.dp.click_chiffon_dress_link()
        result_2 = self.cdp.verify_chiffon_dress_page_title()
        self.ast.collect_result(
            result_2, "Chiffon Dress Page Title Verification")

        self.cdp.order_chiffon_dress()
        self.cdp.set_chiffon_dress_image_attributes()
        result_3 = self.cdp.verify_chiffon_dress_popup_cart_success_message()
        self.ast.collect_result(
            result_3, "Chiffon Dress Pop-up Cart Success Message Verification")

        result_4 = self.cdp.verify_chiffon_dress_popup_cart_product_image()
        self.ast.collect_result(
            result_4, "Chiffon Dress Pop-up Cart Image Verification")

        result_5 = self.cdp.verify_chiffon_dress_popup_cart_product_title()
        self.ast.collect_result(
            result_5, "Chiffon Dress Pop-up Cart Product Title Verification")

        result_6 = (
            self.cdp.verify_chiffon_dress_popup_cart_product_attributes())
        self.ast.collect_result(
            result_6,
            "Chiffon Dress Pop-up Cart Product Attributes Verification")

        result_7 = self.cdp.verify_chiffon_dress_popup_cart_product_quantity()
        self.ast.collect_result(
            result_7,
            "Chiffon Dress Pop-up Cart Product Quantity Verification")

        result_8 = self.cdp.verify_chiffon_dress_popup_cart_product_price()
        self.ast.collect_result(
            result_8, "Chiffon Dress Pop-up Cart Product Price Verification")

        result_9 = self.cdp.verify_chiffon_dress_popup_cart_quantity_text()
        self.ast.collect_result(
            result_9, "Chiffon Dress Pop-up Cart Quantity Text Verification")

        result_10 = self.cdp.verify_chiffon_dress_popup_cart_products_total()
        self.ast.collect_result(
            result_10, "Chiffon Dress Pop-up Cart Products Total Verification")

        result_11 = self.cdp.verify_chiffon_dress_popup_cart_shipping_cost()
        self.ast.collect_result(
            result_11, "Chiffon Dress Pop-up Cart Shipping Cost Verification")

        result_12 = self.cdp.verify_chiffon_dress_popup_cart_total()
        self.ast.collect_result(
            result_12, "Chiffon Dress Pop-up Cart Total Verification")

        self.cdp.click_chiffon_dress_popup_continue_button()
        self.cdp.scroll_to_chiffon_dress_menu_cart()
        self.cdp.chiffon_dress_menu_cart_hover()
        self.cdp.click_chiffon_dress_remove_link()
        result_13 = self.cdp.verify_chiffon_dress_empty_cart_quantity()
        self.ast.determine_result(
            result_13, "Chiffon Dress Empty Cart Quantity Verification",
            "test_chiffon_dress_popup_cart_details")
class TestLogin():
    @pytest.fixture(autouse=True)
    def object_setup(self):
        self.lp = LoginPage(self.driver)
        self.pip = PersonalInformationPage(self.driver)
        self.ap = AccountPage(self.driver)
        self.fpp = ForgottenPasswordPage(self.driver)
        self.ast = AssertStatus()

    @pytest.mark.parametrize(
        "email, password, email_error_message, password_error_message",
        get_csv_data("login_test_data.csv"))
    def test_invalid_login(self, email, password, email_error_message,
                           password_error_message):
        result_1 = self.lp.navigate_to_login_page()
        self.ast.collect_result(result_1, "Login Page Title Verification")

        self.lp.login(email, password)
        result_2 = self.lp.verify_invalid_login_error_message(
            email_error_message, password_error_message)
        self.ast.determine_result(result_2, "Failed Login Verification",
                                  "test_invalid_login")

    def test_valid_login(self):
        result_1 = self.lp.navigate_to_login_page()
        self.ast.collect_result(result_1, "Login Page Title Verification")

        self.lp.login("*****@*****.**", "123456")
        result_2 = self.lp.verify_valid_login()
        self.ast.determine_result(result_2, "Login Verification",
                                  "test_valid_login")

    @pytest.mark.parametrize(
        "email, error_message",
        get_csv_data("retrieve_password_email_test_data.csv"))
    def test_invalid_password_retrieval(self, email, error_message):
        self.lp.navigate_to_forgotten_password_page()
        result_1 = self.fpp.verify_forgotten_password_page_title()
        self.ast.collect_result(result_1,
                                "Forgotten Password Page Title Verification")

        self.fpp.retrieve_password(email)
        result_2 = self.fpp.verify_invalid_password_retrieval(error_message)
        self.ast.determine_result(result_2,
                                  "Failed Password Retrieval Verification",
                                  "test_invalid_password_retrieval")

    def test_valid_password_retrieval(self):
        self.lp.navigate_to_forgotten_password_page()
        result_1 = self.fpp.verify_forgotten_password_page_title()
        self.ast.collect_result(result_1,
                                "Forgotten Password Page Title Verification")

        self.fpp.retrieve_password("*****@*****.**")
        result_2 = self.fpp.verify_valid_password_retrieval()
        self.ast.determine_result(result_2, "Password Retrieval Verification",
                                  "test_valid_password_retrieval")

    def test_changed_password_login(self):
        result_1 = self.lp.navigate_to_login_page()
        self.ast.collect_result(result_1, "Login Page Title Verification")

        self.lp.login("*****@*****.**", "123456")
        result_2 = self.lp.verify_valid_login()
        self.ast.collect_result(result_2, "Login Verification")

        self.ap.click_information_link()
        self.pip.change_password("123456", "1234567", "1234567")
        result_3 = self.pip.Verify_valid_password_change()
        self.ast.collect_result(result_3, "Changed Password Verification")

        result_4 = self.lp.navigate_to_login_page()
        self.ast.collect_result(result_4, "Login Page Title Verification")

        self.lp.login("*****@*****.**", "123456")
        result_5 = self.lp.verify_invalid_password_error_message()
        self.ast.collect_result(result_5, "Failed Login Verification")

        self.lp.login("*****@*****.**", "1234567")
        result_6 = self.lp.verify_valid_login()
        self.ast.collect_result(result_6, "Login Verification")

        self.ap.click_information_link()
        self.pip.change_password("1234567", "123456", "123456")
        result_7 = self.pip.Verify_valid_password_change()
        self.ast.determine_result(result_7, "Changed Password Verification",
                                  "test_changed_password_login")
class TestShoppingCart():
    @pytest.fixture(autouse=True)
    def object_setup(self):
        self.dp = DressesPage(self.driver)
        self.cdp = ChiffonDressPage(self.driver)
        self.scp = ShoppingCartPage(self.driver)
        self.scp_session = ShoppingCartPage(self.driver)
        self.ast = AssertStatus()

    def test_chiffon_dress_shopping_cart_details(self):
        result_1 = self.dp.navigate_to_dresses_page()
        self.ast.collect_result(result_1, "Dresses Page Title Verification")

        self.dp.click_chiffon_dress_link()
        result_2 = self.cdp.verify_chiffon_dress_page_title()
        self.ast.collect_result(result_2,
                                "Chiffon Dress Page Title Verification")

        self.cdp.order_chiffon_dress()
        self.cdp.set_chiffon_dress_image_attributes()
        self.cdp.click_chiffon_dress_popup_cart_checkout_button()
        result_3 = self.scp.verify_shopping_cart_page_title()
        self.ast.collect_result(result_3,
                                "Shopping Cart Page Title Verification")

        result_4 = self.scp.verify_chiffon_dress_product_image()
        self.ast.collect_result(result_4, "Chiffon Dress Image Verification")

        result_5 = self.scp.verify_chiffon_dress_product_title()
        self.ast.collect_result(result_5,
                                "Chiffon Dress Product Title Verification")

        result_6 = self.scp.verify_chiffon_dress_product_model()
        self.ast.collect_result(result_6,
                                "Chiffon Dress Product Model Verification")

        result_7 = self.scp.verify_chiffon_dress_product_attributes()
        self.ast.collect_result(
            result_7, "Chiffon Dress Product Attributes Verification")

        result_8 = self.scp.verify_chiffon_dress_discount_price()
        self.ast.collect_result(result_8,
                                "Chiffon Dress Discount Price Verification")

        self.scp.click_delete_chiffon_dress()
        result_9 = self.scp.verify_empty_shopping_cart()
        self.ast.determine_result(result_9, "Empty Shopping Cart Verification",
                                  "test_chiffon_dress_shopping_cart_details")

    @pytest.mark.parametrize(
        "update_quantity, quantity, price, products_total, "
        "shipping, subtotal, tax, total, delete_quantity",
        get_csv_data("product_totals_test_data.csv"))
    def test_chiffon_dress_shopping_cart_product_totals(
            self, update_quantity, quantity, price, products_total, shipping,
            subtotal, tax, total, delete_quantity):
        result_1 = self.dp.navigate_to_dresses_page()
        self.ast.collect_result(result_1, "Dresses Page Title Verification")

        self.dp.click_chiffon_dress_link()
        result_2 = self.cdp.verify_chiffon_dress_page_title()
        self.ast.collect_result(result_2,
                                "Chiffon Dress Page Title Verification")

        self.cdp.order_chiffon_dress()
        self.cdp.click_chiffon_dress_popup_cart_checkout_button()
        result_3 = self.scp.verify_shopping_cart_page_title()
        self.ast.collect_result(result_3,
                                "Shopping Cart Page Title Verification")

        self.scp.enter_chiffon_dress_quantity(update_quantity)
        result_9 = self.scp.verify_chiffon_dress_quantity(quantity)
        self.ast.collect_result(result_9,
                                "Chiffon Dress Quantity Verification")

        result_10 = self.scp.verify_chiffon_dress_total_product_price(price)
        self.ast.collect_result(result_10,
                                "Chiffon Dress Product Price Verification")

        result_11 = (
            self.scp.verify_shopping_cart_products_total(products_total))
        self.ast.collect_result(result_11,
                                "Shopping Cart Products Total Verification")

        result_12 = self.scp.verify_shopping_cart_shipping_total(shipping)
        self.ast.collect_result(result_12,
                                "Shopping Cart Shipping Total Verification")

        result_13 = self.scp.verify_shopping_cart_subtotal(subtotal)
        self.ast.collect_result(result_13,
                                "Shopping Cart Subtotal Verification")

        result_14 = self.scp.verify_shopping_cart_tax_total(tax)
        self.ast.collect_result(result_14,
                                "Shopping Cart Tax Total Verification")

        result_15 = self.scp.verify_shopping_cart_price_total(total)
        self.ast.collect_result(result_15,
                                "Shopping Cart Price Total Verification")

        self.scp.enter_chiffon_dress_quantity(delete_quantity)
        result_16 = self.scp.verify_empty_shopping_cart()
        self.ast.determine_result(
            result_16, "Empty Shopping Cart Verification",
            "test_chiffon_dress_shopping_cart_product_totals")

    def test_loading_chiffon_dress_shopping_cart_session(self):
        result_1 = self.dp.navigate_to_dresses_page()
        self.ast.collect_result(result_1, "Dresses Page Title Verification")

        self.dp.click_chiffon_dress_link()
        result_2 = self.cdp.verify_chiffon_dress_page_title()
        self.ast.collect_result(result_2,
                                "Chiffon Dress Page Title Verification")

        self.cdp.order_chiffon_dress()
        self.cdp.click_chiffon_dress_popup_cart_checkout_button()
        result_3 = self.scp.verify_shopping_cart_page_title()
        self.ast.collect_result(result_3,
                                "Shopping Cart Page Title Verification")

        self.scp_session.load_shopping_cart_session()
        result_4 = self.scp_session.verify_chiffon_dress_product_title()
        self.ast.collect_result(result_4,
                                "Chiffon Dress Product Title Verification")

        self.scp_session.click_delete_chiffon_dress()
        result_5 = self.scp_session.verify_empty_shopping_cart()
        self.ast.collect_result(result_5, "Empty Shopping Cart Verification")

        self.scp_session.quit_shopping_cart_page()
        self.scp.refresh_shopping_cart_page()
        result_6 = self.scp.verify_empty_shopping_cart()
        self.ast.determine_result(
            result_6, "Empty Shopping Cart Verification",
            "test_loading_chiffon_dress_shopping_cart_session")