次の 2 つのテストを検討してください。
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() などを最初に呼び出せるようにしたいので、保持する必要はありません。繰り返します。
もちろん、これらのテストは完璧ではありません。私がユーザーのためにデータベース内のデータに依存しているという事実はすでに臭いですが、これらはレガシープロジェクトに組み込まれているテストであり、ある意味では学術的な演習です.
理想的には、次のようなものが必要です。
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
誰かが私がこれについてどうやって行くことができるかを概説できますか? ありがとう。