我正在使用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)。
我可以从setUpTestData
获得django.test.TestCase
的内容吗?
编辑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
后,测试仍然失败。
感谢您的反馈!
答案 0 :(得分:0)
问题是由load_data()
引起的。数据库将在load_data()
的{{1}}第一次调用中填充,第一次测试将通过。对于第二次测试,数据库数据将被清除而不会刷新。
更改setUpClass
方法以加载灯具解决了这个问题。