0

Рассмотрим эти два теста:как я могу реорганизовать приемочные испытания с авторизацией

Imports OpenQA.Selenium 
Imports OpenQA.Selenium.Chrome 

<TestClass()> Public Class DSCSLoginTest 

<TestMethod()> Public Sub DSCSLoginLinkTest() 
    Dim driver As New ChromeDriver() 
    driver.Navigate.GoToUrl("http://myapp.com/landing.aspx") 

    'click login 
    driver.FindElementById("HeadLoginView_HeadLoginStatus").Click() 
    Assert.AreEqual("http://myapp.com/Login.aspx", driver.Url) 

    'fill in username 
    driver.FindElementById("MainContent_Login1_txtUsername").SendKeys("user") 

    'fill in password 
    driver.FindElementById("MainContent_Login1_Password").SendKeys("pass") 

    'click login 
    driver.FindElementById("MainContent_Login1_LoginButton").Click() 

    'test correct page 
    Assert.AreEqual("http://myapp.com/loginok.aspx", driver.Url) 

    'test correct title 
    Dim title As String = driver.FindElementById("HeadContent_lblHeader").Text() 
    Assert.AreEqual("Welcome to MyApp", title) 
End Sub 

<TestMethod()> Public Sub DSCSCantLoginWithoutPassword() 
    Dim driver As New ChromeDriver() 
    driver.Navigate.GoToUrl("http://myapp.com/landing.aspx") 

    'click login 
    driver.FindElementById("HeadLoginView_HeadLoginStatus").Click() 
    Assert.AreEqual("http://myapp.com/Login.aspx", driver.Url) 

    'fill in username 
    driver.FindElementById("MainContent_Login1_txtUsername").SendKeys("user") 

    'fill in password 
    driver.FindElementById("MainContent_Login1_Password").SendKeys("") 

    'click login 
    driver.FindElementById("MainContent_Login1_LoginButton").Click() 

    'test correct page 
    Assert.AreEqual("http://myapp.com/Login.aspx", driver.Url) 

    'test error recognition 
    Dim validationResponse As String = driver.FindElementById("MainContent_Login1_PasswordRequired").Text 
    Assert.AreEqual("*", validationResponse) 
End Sub 
End Class 

Вы можете увидеть просмотра в регистрационной части дублируется. Будет больше тестов, которые будут зависеть от входа пользователя в систему в первую очередь, поэтому в идеале я хотел бы реорганизовать это в другой класс, чтобы иметь возможность называть что-то вроде login() или loginAsAdmin() во-первых, «Я должен продолжать повторяться.

Конечно, эти тесты не идеальны. Тот факт, что я полагаюсь на данные в db для пользователей, уже запах, но это тесты, которые вводятся в унаследованный проект и, в некотором смысле, в академическое упражнение.

В идеале я хотел бы иметь что-то вроде:

login() 

инкапсулировать достаточно, чтобы заставить меня войти в систему, например:

Dim driver As New ChromeDriver() 
    driver.Navigate.GoToUrl("http://myapp.com/landing.aspx") 

    'click login 
    driver.FindElementById("HeadLoginView_HeadLoginStatus").Click() 

    'fill in username 
    driver.FindElementById("MainContent_Login1_txtUsername").SendKeys("user") 

    'fill in password 
    driver.FindElementById("MainContent_Login1_Password").SendKeys("pass") 

    'click login 
    driver.FindElementById("MainContent_Login1_LoginButton").Click() 

End Sub 

Может кто-то обрисовать, как я могу идти об этом, пожалуйста, ? Спасибо.

+0

При этом будучи полностью функциональный код, вы могли бы быть лучше, по меньшей [стопка Просмотр Кода] (http://www.codereview.stackexchange.com) –

ответ

0

Может быть, как:

Public Sub Login(dr as ChromeDriver, user as String, pass as String) 
    dr.Navigate.GoToUrl("http://myapp.com/landing.aspx") 
    dr.FindElementById("HeadLoginView_HeadLoginStatus").Click() 
    dr.FindElementById("MainContent_Login1_txtUsername").SendKeys(user) 
    dr.FindElementById("MainContent_Login1_Password").SendKeys(pass) 
    dr.FindElementById("MainContent_Login1_LoginButton").Click() 
End Sub 
Смежные вопросы