【发布时间】:2016-08-11 17:54:21
【问题描述】:
我正在使用 Selenium 和 StaticLiveServerTestCase 来测试 Django 应用程序。
测试如下:
class e2eTest(StaticLiveServerTestCase):
@classmethod
def setUpClass(cls):
super(IntegrationTest, cls).setUpClass()
cls.data = load_data()
cls.driver = webdriver.PhantomJS("path_to_phantomjs")
cls.common = common(cls.driver, cls.live_server_url + settings.STATIC_URL + 'index.html')
def setUp(self):
for data in self.data:
data.refresh_from_db()
def test_login_1(self):
self.common.login('admin')
def test_login_2(self):
self.common.login('admin')
load_data() 用于填充测试数据库(使用应用程序models)。
如果我跑:
1- python manage.py test login.tests:测试以test_login_1 开头。 test_login_1 成功,test_login_2 失败。
2- python manage.py test login.tests --reverse:测试以test_login_2 开头。 test_login_2 成功,test_login_1 失败。
我相信这与每次测试后开始擦除的数据有关。
附:当使用 django.test.TestCase & setUpTestData 和 Django 的测试客户端使用相同的方法时,它可以工作(直接将数据发送到登录 api)。
我可以从django.test.TestCase 得到类似setUpTestData 的东西吗?
编辑 1
@luke_aus:load_data() 包含填充测试数据库的方法:
from my_app import User, priceModel
user = User(username='test').set_password('test')
user.save()
priceModel = priceModel(name='test')
priceModel.save()
....
@knbk:我使用的是 Django 1.9。通过--parallel=1后测试仍然失败。
感谢你们的反馈!
【问题讨论】:
-
load_data() 中有什么?
-
如果你使用的是 Django 1.9+:如果你通过
--parallel=1,它仍然会失败吗?