2009-07-06 27 views
5

Tôi muốn viết một số unittests cho một ứng dụng sử dụng MySQL. Tuy nhiên, tôi không muốn kết nối với một cơ sở dữ liệu mysql thực, mà là một cơ sở dữ liệu tạm thời không yêu cầu bất kỳ máy chủ SQL nào cả.thử nghiệm các ứng dụng python sử dụng mysql

Bất kỳ thư viện nào (tôi không thể tìm thấy bất kỳ thứ gì trên google)? Bất kỳ mẫu thiết kế nào? Lưu ý rằng DIP không hoạt động vì tôi vẫn phải kiểm tra lớp được tiêm.

+0

thử pypi.python.org/pypi/pg13, trong đó có trình mô phỏng SQL. caveat: Tôi đã viết nó. – amwinter

Trả lời

8

Không có cách nào tốt để làm điều đó. Bạn muốn chạy truy vấn của bạn đối với một máy chủ MySQL thực, nếu không bạn không biết liệu chúng có hoạt động hay không.

Tuy nhiên, điều đó không có nghĩa là bạn phải chạy chúng trên máy chủ sản xuất. Chúng ta có các kịch bản tạo ra một cơ sở dữ liệu Kiểm thử Đơn vị, và sau đó xé nó xuống khi các kiểm tra đơn vị đã chạy. Bằng cách đó, chúng tôi không phải duy trì cơ sở dữ liệu thử nghiệm tĩnh, nhưng chúng tôi vẫn có thể thử nghiệm với máy chủ thực.

4

Tôi đã sử dụng python-mockmox cho các mục đích như vậy (cực kỳ kiểm tra trọng lượng nhẹ mà hoàn toàn không thể yêu cầu bất kỳ máy chủ SQL), nhưng đối với vi rộng hơn/xét nghiệm chuyên sâu, bắt đầu và Populating một trường hợp địa phương của MySQL không phải là quá tệ.

Thật không may SQLite SQL phương ngữ và MySQL khác nhau đủ mà cố gắng sử dụng trước cho thử nghiệm là hơi không thực tế, trừ khi bạn đang sử dụng một số ORM (Django, SQLObject, SQLAlchemy, ...) có thể ẩn sự khác biệt phương ngữ.

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