Tôi muốn có một mô-đun python chứa một số bài kiểm tra đơn vị mà tôi có thể chuyển đến hg bisect --command
.Làm thế nào để thiết lập và teardown tạm thời django db để kiểm tra đơn vị?
Các xét nghiệm đơn vị đang thử nghiệm một số chức năng của một ứng dụng django, nhưng tôi không nghĩ rằng tôi có thể sử dụng hg bisect --command manage.py test mytestapp
vì mytestapp
sẽ phải được cho phép trong settings.py, và các chỉnh sửa để settings.py sẽ được clobbered khi hg bisect
cập nhật thư mục làm việc.
Vì vậy, tôi muốn biết nếu cái gì đó như sau đây là cách tốt nhất để đi:
import functools, os, sys, unittest
sys.path.append(path_to_myproject)
os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
def with_test_db(func):
"""Decorator to setup and teardown test db."""
@functools.wraps
def wrapper(*args, **kwargs):
try:
# Set up temporary django db
func(*args, **kwargs)
finally:
# Tear down temporary django db
class TestCase(unittest.TestCase):
@with_test_db
def test(self):
# Do some tests using the temporary django db
self.fail('Mark this revision as bad.')
if '__main__' == __name__:
unittest.main()
tôi nên biết ơn nhất nếu bạn có thể tư vấn cho một trong hai:
- Nếu có một cách đơn giản hơn, có lẽ là phân lớp
django.test.TestCase
nhưng không chỉnh sửa settings.py hoặc, nếu không; - Những dòng ở trên có nội dung "Thiết lập db tạm thời django" và "Xé xuống tạm thời django db" phải không?
+1 để đăng giải pháp cuối cùng. –
Cảm ơn. Tôi hy vọng rằng điều này cho thấy những người khác làm thế nào để thiết lập cơ sở dữ liệu kiểm tra django cho bất kỳ bài kiểm tra đơn vị tùy ý, bao gồm cả các bài kiểm tra mũi. – blokeley