1

我正在使用 selenium 测试一个 django 应用程序,我的代码如下所示:

class MyLiveServerTestCase(LiveServerTestCase):

    def setUp(self):
        super(MyLiveServerTestCase, self).setUp()
        self.client = Client()
        self.browser = webdriver.Firefox()
        self.browser.implicitly_wait(30)
        self.browser.stop = lambda x: WebDriverWait(self.browser, x).until(lambda x: False)
        self.browser.get_body = lambda: self.browser.find_element_by_tag_name('body')

    def tearDown(self):
        super(MyLiveServerTestCase, self).tearDown()
        self.browser.quit()

    def login_staff(self):
        User.objects.create_superuser('abc', 'abc@gmail.com', '1234')
        # User opens his web browser, and goes to the website
        self.browser.get(self.live_server_url)
        # User types in his username and passwords and hits return
        username_field = self.browser.find_element_by_name('username')
        username_field.send_keys('abc')
        password_field = self.browser.find_element_by_name('password')
        password_field.send_keys('1234')
        # User submits the form
        password_field.send_keys(Keys.RETURN)
        body = self.browser.find_element_by_tag_name('body')
        self.assertIn('abc', body.text)

当我运行这个测试用例时login_staff,我得到一个错误

IntegrityError:唯一约束失败:auth_user.username

因为在开始我的每个测试用例时,我都在创建一个新的数据库和用户实例,那么为什么会出现这个完整性错误呢?有没有办法在这里刷新以前的数据库?知道为什么即使在运行这个测试时创建了一个新数据库,这个错误仍然会出现吗?

4

0 回答 0