我有一个注册新用户的简单表单。我为它写了一个测试用例。它看起来如下:
class AccountTestCase(LiveServerTestCase):
def setUp(self):
self.selenium = webdriver.Firefox()
super(AccountTestCase, self).setUp()
def tearDown(self):
self.selenium.quit()
super(AccountTestCase, self).tearDown()
def test_register(self):
selenium = self.selenium
#Opening the link we want to test
selenium.get('http://localhost:8000/register/')
#find the form element
first_name = selenium.find_element_by_id('id_first_name')
last_name = selenium.find_element_by_id('id_last_name')
username = selenium.find_element_by_id('id_username')
email = selenium.find_element_by_id('id_email')
password1 = selenium.find_element_by_id('id_password1')
password2 = selenium.find_element_by_id('id_password2')
submit = selenium.find_element_by_id('btn_signup')
#Fill the form with data
first_name.send_keys('abc')
last_name.send_keys('abc')
username.send_keys('abc')
email.send_keys('abc@gmail.com')
password1.send_keys('abcabcabc')
password2.send_keys('abcabcabc')
#submitting the form
submit.send_keys(Keys.RETURN)
#check the returned result
self.assertTrue('Success!' in selenium.page_source)
当我第一次运行测试用例时,它以漂亮的颜色通过,但在第二次运行时它失败了。
经过一番调查后,我意识到我的数据库中已经创建了一个具有测试用例凭据的用户。因此,当我第二次运行测试用例时,它无法创建新用户,因为具有这些详细信息的用户已经存在。 (我可以看到来自Django管理员的用户)。
我认为这不是LiveServerTestCase(或任何类型的测试用例)的预期行为。在安装程序中,创建一个临时数据库,在其上运行测试用例,并在tearDown阶段销毁。
我想知道这是否是预期的行为?如果不是为什么会发生这种情况?我怎么能避免这样做?
我没有在settings.py中做过任何与selenium或者测试相关的更改(是否有标志或需要设置的东西?)。另外,我需要保持服务器运行才能正常工作(这是正常的吗?)。
答案 0 :(得分:0)
@Paulo Almeida指出:
我使用了错误的网址。我应该使用的网址是self.live_server_url
。因为我使用http://localhost:8000/register/
它期待服务器在那里运行并创建记录。
感谢。