2010-08-26 30 views
6

Tôi đang thử nghiệm đơn đăng ký của mình và tôi đang gặp sự cố và tôi không chắc chắn lý do. Tôi đang tải đồ đạc cho các bài kiểm tra của tôi và đồ đạc có các phím nước ngoài dựa vào nhau. Chúng phải được tải theo một thứ tự nhất định hoặc nó sẽ không hoạt động.Đồ đạc Django có tải không đúng thứ tự khi thử nghiệm không?

Các đồ đạc Tôi tải là:

["test_company_data", "test_rate_index", 'test_rate_description']

Công ty dữ liệu là một trong những đầu tiên. test_rate_index có khóa ngoại cho công ty và test_rate_description có khóa ngoài cho mô hình được khai báo trong test_rate_index. (như là một thử nghiệm khác nhau, khác nhau cần đồ đạc khác nhau đó là lý do tại sao tôi không chỉ đẩy tất cả mọi thứ trong một)

Nếu tôi sử dụng quy trình chuẩn của django để kiểm tra tải, các thử nghiệm không tải theo thứ tự thích hợp.

 
class TestPackages(test.TestCase): 
    fixtures = ["test_company_data", "test_rate_index", "test_rate_description",] 

Tôi nhận được thông báo

DoesNotExist: RateDescription matching query does not exist.

Nhưng nếu tôi đảo ngược thứ tự của đồ đạc của tôi (mà làm cho không có ý nghĩa) nó hoạt động:

fixtures = ["test_rate_description", "test_company_data", "test_rate_index",]

Django's documentation khẳng định rằng đồ đạc tải theo thứ tự chúng được tuyên bố, nhưng điều này dường như không đúng.

Là một workaround, thay vì sử dụng django của

 call_command('loaddata', *fixtures, **{ 
              'verbosity': 0, 
              'commit': False, 
              'database': 'default' 
             })

Tôi đang sử dụng một chức năng khác nhau trong phương pháp thiết lập mà tải đồ đạc cùng một lúc.

def load_fixtures(fixtures): 
    for fixture in fixtures: 
     call_command('loaddata', fixture, **{ 
              'verbosity': 0, 
              'commit': False, 
              'database': 'default' 
              })

Có điều gì đó tôi đang làm không chính xác hoặc không hiểu rằng nguyên nhân khiến đồ đạc của tôi không được tải đúng thứ tự khi cố gắng sử dụng phương pháp chuẩn?

+0

bạn có thể đăng các mô hình từ đồ đạc của mình như thế nào không? –

Trả lời

1

Tài liệu của Django nói rằng tải đồ đạc theo thứ tự chúng được khai báo, nhưng điều này dường như không đúng.

Điều này chắc chắn là lạ. Đồ đạc đang được nạp theo thứ tự thích hợp khi tôi thử nghiệm một trong các dự án của tôi (Django 1.2.1, Python 2.6.2, Postgresql 8.3.11).

Đây là những gì tôi sẽ làm để khắc phục sự cố.

DoesNotExist: RateKhông khớp truy vấn khớp không tồn tại.

  1. Bạn gặp phải lỗi này khi tải lịch thi đấu hoặc khi thực hiện bài kiểm tra? Bạn có thể tìm thấy các fixture/code đó là nâng cao này? Tăng độ rách nếu cần thiết.

  2. Bạn có thể thử kích hoạt lệnh loaddata từ dòng lệnh không? Gọi nó ba lần, chuyển tên của một vật cố định cho mỗi cuộc gọi theo đúng trình tự mong muốn. Và xem liệu các đồ đạc có được tải không.

  3. Tôi biết bạn có thể đã làm điều này nhưng bạn có thể đảm bảo rằng đồ đạc đầu tiên và thứ hai không chứa bất kỳ dữ liệu RateDescription nào không?

+2

Xin chào Manoj, Cảm ơn bạn đã đề xuất gỡ lỗi. Khi tôi chạy từ dòng lệnh, tôi phát hiện ra rằng đồ đạc đã bị đánh bom bởi vì "creation_time" có thể không rỗng " Sau khi thêm creation_time vào các đồ đạc mà chúng có vẻ chạy như tôi mong đợi. vẫn không có ý nghĩa với tôi tại sao họ sẽ cài đặt có vẻ như ok trong một đơn đặt hàng nhưng không phải là một khác.Tất cả các bài kiểm tra của tôi thông qua và các bài kiểm tra dựa trên dữ liệu đó đang có. – Aaron

Các vấn đề liên quan