【问题标题】:Functional Test Not isolating from database功能测试不与数据库隔离
【发布时间】:2015-10-21 22:55:53
【问题描述】:

我遇到的问题是我的功能测试没有与主数据库隔离,测试中有剩余的数据。我运行了 python manage.py flush 并且测试工作正常,但是当我再次运行测试时,应该删除的测试创建的数据仍然存在,使我的测试失败。我目前只使用 SQLite。

functional_test.py

from django.test import LiveServerTestCase
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

class NewUserTest(LiveServerTestCase):

def setUp(self):
    self.browser = webdriver.Firefox()
    self.browser.implicitly_wait(15)

def tearDown(self):
    self.browser.quit()

def test_user(self):
   #Some test

【问题讨论】:

  • 这是默认行为。您需要在测试完成后显式删除不需要的任何测试数据。一种策略是每次都删除/创建数据库,并且在运行 selenium 测试之前只加载一组预先知道的测试装置。
  • @AronYsidoro 你知道自动删除测试创建的数据,而不必在每次测试后运行 manage.py flush
  • 看看这个问题。似乎是一个类似的问题:stackoverflow.com/questions/17435155/…
  • 谢谢,我想通了,这实际上与功能测试文件夹中文件的命名方式有关。我有一个更冗长的名称 test_this_thing.py,我将其重命名为 tests.py,但由于某种原因它起作用了。

标签: django selenium


【解决方案1】:

您忘记缩进您的方法定义(以“def”开头的语句)。结果,Python 解释器认为您已经定义了一个名为 NewUserTest 的新类,它不包含任何属性和三个顶级函数。

要解决这个问题,只需将“def”语句缩进适当的数量(4 个空格是 Python 社区的标准约定)。它应该是这样的:

class NewUserTest(LiveServerTestCase):

    def setUp(self):
        self.browser = webdriver.Firefox()
        self.browser.implicitly_wait(15)

    def tearDown(self):
        self.browser.quit()

...

【讨论】:

    猜你喜欢
    • 2013-11-04
    • 2016-11-30
    • 2016-12-17
    • 2015-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    相关资源
    最近更新 更多