Рассмотрим эти два теста:как я могу реорганизовать приемочные испытания с авторизацией
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
Может кто-то обрисовать, как я могу идти об этом, пожалуйста, ? Спасибо.
При этом будучи полностью функциональный код, вы могли бы быть лучше, по меньшей [стопка Просмотр Кода] (http://www.codereview.stackexchange.com) –