在我的测试中,我想验证没有正确访问权限的用户是否应该无法访问某个页面(URL):只有分配了教师角色的用户才能访问以下URL。
http://learning4fun-xx.com/forteacher/
当没有指定教师角色的用户时,例如学生,但尝试访问上面的URL,此用户将被定向到下面的URL /页面,页面上有未经授权的消息。
http://learning4fun-xx.com/notauthorized/
如何使用page-object实现这一目标?
我的专题文件:
Scenario: User Role test.
Given I am logged in as a student.
When I am trying to visit teacher page.
Then I am not authorized.
我应该这样做吗?要验证的是正确的测试? (step_definitions)
Given(/^I am logged in as a student\.$/) do
visit(LoginPage).login
end
When(/^I am trying to visit teacher page\.$/) do
visit(TeacherPage)
end
Then(/^I am not authorized\.$/) do
visit(NotAuthorizedPage).should_contain_warning_message 'Not Authorized'
end
上面的步骤通过,甚至访问(TeacherPage),这让我很困惑。该页面根本不显示,它实际上指示用户/学生访问第二个URL:
http://learning4fun-xx.com/notauthorized/
如何测试此方案?请分享您的想法。
答案 0 :(得分:0)
您应该在PageF}的visit_page
和on_page
代码上take a look。致电visit(SomePage)
并不会对页面上的内容进行任何形式的验证;唯一一次对页面元素进行检查的时候是调用PageObject生成的方法之一(例如点击,检查存在等)。
如果您希望某个步骤可能失败,则必须发出某种运行时错误。您可以使用RSpec期望或PageObject的等待方法等。
如果您希望visit_page
抛出错误,则必须在名为initialize_page
的方法中提供您自己的自定义验证码,以验证(使用,最有可能是wait_until
或{ {1}}方法)有问题的页面所呈现的某些元素已经呈现。
顺便说一下,when_present
会将浏览器定向到该页面,无论如何,都会导致传递步骤。您需要visit(NotAuthorizedPage)
,但由于您只是检查文本的存在而不是正确的页面是否已加载,因此您可以从技术上做on(NotAuthorizedPage)
。
希望有所帮助。