当前位置: 首页 > 面试题库 >

将LiveServerTestCase与Django一起使用时,使用代码登录

谭昊乾
2023-03-14
问题内容

所以我有一个Selenium功能测试套件。我已经在一些测试中测试了登录/注册功能,方法是将Selenium客户端导航到注册页面,输入用户名和密码,然后告诉Selenium使用相同的凭据登录。现在,我想测试站点“需要登录”区域的其他部分,而不必告诉Selenium单击并在测试浏览器中输入文本。

换句话说,我想使用这样的东西(我在视图单元测试中使用得很好):

self.client = Client()  
self.user = User.objects.create_user('temporary', 'temporary@gmail.com', 'temporary')  
self.user.save()  
self.client.login(username='temporary', password='temporary')

在我的Selenium测试中,因此我不必在每个测试中都重复冗长的手动登录过程(因为正如我之前所说,我已经在较早的测试中测试了登录系统)

截至目前,我只是为需要登录的每个测试复制并粘贴“登录流程”
Selenium指令。这会使我的测试每个额外花费5-6秒,这使我的function_tests.py文件非常膨胀。

我所有的Google搜寻知识都带我到一些教我如何测试Selenium登录的页面。

提前致谢。


问题答案:

您无法从Selenium驱动程序登录用户。没有一些黑客,这是不可能的。

但是您可以通过将每个TestCase移到setUp方法来登录一次。

您还可以通过创建从LiveServerTestCase继承的类来避免复制粘贴。

更新

这段代码对我有用:

self.client.login(username=superuser.username, password='superpassword') #Native django test client
cookie = self.client.cookies['sessionid']
self.browser.get(self.live_server_url + '/admin/')  #selenium will set cookie domain based on current page domain
self.browser.add_cookie({'name': 'sessionid', 'value': cookie.value, 'secure': False, 'path': '/'})
self.browser.refresh() #need to update page for logged in user
self.browser.get(self.live_server_url + '/admin/')


 类似资料:
  • 问题内容: 每个开启器基本版本是否可以通过一个袜子服务器上的SOCKS代理使用urllib2来获取页面?我已经看到了使用setdefaultproxy方法的解决方案,但是我需要在不同的开瓶器中使用不同的袜子。 因此,有一个SocksiPy库,它很好用,但是必须以这种方式使用: 也就是说,它为所有urllib2请求设置相同的代理。如何为不同的开瓶器使用不同的代理? 问题答案: 尝试使用pycurl:

  • 我最近开始使用JMockit,对TDD和mocking非常陌生。我喜欢使用代码覆盖率来确保我已经测试了给定类/方法的所有行。 我在尝试JMockit(Delegate()功能)和代码覆盖率时遇到了以下错误。我包括通过和不通过的考试。 我不确定我是否做错了什么? 我想知道是否有其他人遇到过此问题,是否有任何解决方案或修复可用? 我甚至不确定这是JMockit问题还是EclEmma问题。谢谢 我的设置

  • 问题内容: 因此,我一直在为这个(应该是)简单的练习而绞尽脑汁,以使该程序将日期字符串转换为对象,对其进行格式化,并在完成后将其作为字符串再次返回。 这是程序的最后一点,它从文件中获取一小段文本,将其分解为单独的记录,然后将记录分解为单独的数据并将它们分配给个人对象。 我已经在多个位置检查了该代码,并且该代码完全执行了应该执行的操作,直到调用了format函数(该函数抛出)为止。为对象分配了应该分

  • 问题内容: 我想在目录中获取具有特定扩展名的文件列表。在中,我看到了可以做到这一点的方法。 由于我需要特定的扩展名,因此我创建了一个。但是,当我与此一起使用时,出现编译错误。我以为自以来,我应该能够做到这一点。代码如下: 最后一行显示编译错误: 类型的方法不适用于类型的参数 我正在尝试使用,不是。为何编译器无法识别这一点? 如果我编写自己的扩展筛选器,则此方法有效。我宁愿使用而不愿自己写。我究竟做

  • 问题内容: 我正在尝试在我的watchKit应用中使用firebase数据库。我已经在我的iPhone应用程序上开发了此功能,但是发现在我的Watch应用程序上很难做到这一点。当我尝试将firebase导入watch应用程序的VC类中时,它正在创建error 。 可以在Watch app中使用Firebase吗? 问题答案: 可悲的是,没有支持,并由于这样的事实,有没有支持在这些版本中,并高度依赖

  • 问题内容: 当请求来自Ajax.ActionLink(使用Http方法发布)时,是否可以在控制器操作上使用ValidateAntiForgeryToken属性。替代方法似乎是手动滚动JQuery Ajax请求,但我很好奇MVC Ajax框架中是否有办法。 问题答案: 我还没看过。您必须将令牌放入POST中记录的数据中。每次都使用相同的防伪令牌ID(或名称,我不记得了),但是您必须非常小心,并确保您