day 37 (1226): 업로드 작업, 수요 분석

원소 포 지 셔 닝, 원소 조작.원칙: sleep - 디버그
프레임선반 PO 모드 - pageObject - 페이지 대상 웹 페이지 테스트 - 테스트 용례: 모두 페이지 에서 작 동 하 는 테스트 용례: 서로 다른 페이지 에서 작 동 하 는 300 개의 테스트 용례 – 30 개의 페이지.
30 개 페이지 – 30 개 페이지 클래스 (속성 과 행위) 를 정의 합 니 다. 행위: 현재 페이지 의 동작 입 니 다.
용례 1 = 페이지 A 의 조작 1 - 페이지 B 의 조작 4 - 페이지 C 의 조작 5 - 페이지 C 의 행위 6
중심 사상: 테스트 대상 과 테스트 사례, 좋 은 점 을 철저히 분리 한다. 1. 페이지 에서 요소 의 포 지 셔 닝, 요소 조작 에 변화 가 생 긴 다.용례 와 무관 하 다.2. 용례 에서 순서 로 변화 가 생 겼 으 며 테스트 대상 과 무관 하 다.
테스트 용례:
"""
======================
@Author:coco
@Time:2019/12/28
@File:home_page.py
@software:PyCharm
======================
"""
from selenium.webdriver.common.by import By
from selenium.webdriver.remote.webdriver import WebDriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

class HomePage:

    #        
    my_user_name = (By.XPATH,'//a[contains(text(),"    ")]')
    def __init__(self,driver:WebDriver):
        self.driver = driver

    #        
    def user_is_existed(self):
        """
              ,   True,          ,   False
        """
        try:
            WebDriverWait(self.driver,10).until(EC.visibility_of_element_located(self.my_user_name))
        except:
            return False
        else:
            return True


"""
======================
@Author:coco
@Time:2019/12/28
@File:login_page.py
@software:PyCharm
======================
"""
from selenium.webdriver.common.by import By
from selenium.webdriver.remote.webdriver import WebDriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait


# 1.  wedbriver,   
# 2.    



class LoginPage:

    #       
    user_input = (By.XPATH,'//input[@name="phone"]')
    #     
    password_input = (By.XPATH,'//input[@name="password"]')
    #     
    login_button = (By.TAG_NAME,'button')
    #           
    error_from_login_form = (By.XPATH,'//div[@class="form-error-info"]')

    def __init__(self,driver:WebDriver):
        self.driver = driver


    #     
    def login(self,username,passwd):
        #   ??
        WebDriverWait(self.driver,20).until(EC.visibility_of_element_located(self.login_button))
        #      
        self.driver.find_element(*self.user_input).send_keys(username)
        self.driver.find_element(*self.password_input).send_keys(passwd)
        self.driver.find_element(*self.login_button).click()

        #              
        def error_msg_from_login_form(self):
            WebDriverWait(self.driver,20).until(EC.visibility_of_element_located(error_msg_from_login_form()))
            return self.driver.find_element(*self.error_from_login).text

"""
======================
@Author:coco
@Time:2019/12/28
@File:test_login.py
@software:PyCharm
======================
"""
import unittest
from selenium import webdriver
import time

from web_20191226.PageObjects.login_page import LoginPage
from web_20191226.PageObjects.home_page import HomePage

import ddt

@ddt.ddt
class TestLogin(unittest.TestCase):

    def setUp(self) -> None:
        #        
        self.driver = webdriver.Chrome()
        self.driver.maximize_window()
        #          
        self.driver.get("http://120.78.128.25:8765/Index/login.html")
        self.lp = LoginPage(self.driver)

    def tearDown(self) -> None:
        #      
        self.driver.quit()


    def test_login_success(self):
        #   
        # 1、     -     
        self.lp.login("18684720553","python")
        #   
        # 1、url    : http://120.78.128.25:8765/Index/index
        time.sleep(2)
        self.assertEqual("http://120.78.128.25:8765/Index/index",self.driver.current_url)
        # 2、   -               。
        self.assertTrue(HomePage(self.driver).user_is_existed())


    wrong_datas = [
        {"username":"","passwd":"python","check":"      "},
        {"username": "18684720553", "passwd": "", "check": "     "},
        {"username": "1868472055", "passwd": "python", "check": "         "}
    ]

    @ddt.data(*wrong_datas)
    def test_login_failed_by_wrong_datas(self,case):
        #   
        # 1、     -     
        self.lp.login(case["username"],case["passwd"])
        #   
        self.assertEqual(self.lp.get_error_msg_from_login_form(),case["check"])

좋은 웹페이지 즐겨찾기