2010-05-10 14 views
6

Tôi nhận được NhậpError khi chạy các khoản chưa thanh toán bằng Mũi và tôi không khi tôi chạy nó độc lập. Tất cả các tệp được đề cập đến ở đây có thể được xem tại http://gist.github.com/395541#.ImportError bằng cách sử dụng mũi, không có ImportError sử dụng unittest thô?

Nếu tôi chạy kịch bản kiểm tra, importTest-Test.py, trực tiếp tôi nhận được kết quả này:

C:\usr\x\data\src\Python\mmm>python importTest-Test.py 
In mmdb 
In BusinessLogic 
[] 
. 
---------------------------------------------------------------------- 
Ran 1 test in 0.001s 

Nếu tôi cho phép Nose để chạy nó, tôi nhận được một lỗi:

C:\usr\x\data\src\Python\mmm>nosetests.exe 
E 
====================================================================== 
ERROR: Failure: ImportError (No module named mmdb.DataAccess.AttemptDB) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "c:\bin\installed\python2.6\lib\site-packages\nose-0.11.3-py2.6.egg\nose\loader.py", line 382, in loadTestsFromName 
    addr.filename, addr.module) 
    File "c:\bin\installed\python2.6\lib\site-packages\nose-0.11.3-py2.6.egg\nose\importer.py", line 39, in importFromPath 
    return self.importFromDir(dir_path, fqname) 
    File "c:\bin\installed\python2.6\lib\site-packages\nose-0.11.3-py2.6.egg\nose\importer.py", line 86, in importFromDir 
    mod = load_module(part_fqname, fh, filename, desc) 
    File "C:\usr\x\data\src\Python\mmm\importtest-Test.py", line 2, in <module> 
    import importtest 
    File "C:\usr\x\data\src\Python\mmm\importtest.py", line 1, in <module> 
    from mmdb.BusinessLogic.AttemptManager import AttemptManager 
    File "C:\usr\x\data\src\Python\mmm\mmdb\BusinessLogic\AttemptManager.py", line 1, in <module> 
    from mmdb.DataAccess.AttemptDB import AttemptDB 
ImportError: No module named mmdb.DataAccess.AttemptDB 

---------------------------------------------------------------------- 
Ran 1 test in 0.002s 

FAILED (errors=1) 

Các tệp liên quan đến gói bị khó khăn trong cấu trúc sau - một số có thể được thấy ở đây http://gist.github.com/395541#.:

mmm\importtest-Test.py 
mmm\importtest.py 
mmm\mmdb 
mmm\__init__.py 
mmm\mmdb\BusinessLogic 
mmm\mmdb\BusinessObject 
mmm\mmdb\DataAccess 
mmm\mmdb\__init__.py 
mmm\mmdb\BusinessLogic\AttemptManager.py 
mmm\mmdb\BusinessLogic\Collections 
mmm\mmdb\BusinessLogic\__init__.py 
mmm\mmdb\BusinessLogic\Collections\__init__.py 
mmm\mmdb\BusinessObject\__init__.py 
mmm\mmdb\DataAccess\AttemptDB.py 
mmm\mmdb\DataAccess\__init__.py 

Điều này đang diễn ra trên Win32/Python 2.6/Nose 0.11.3.

Tôi rất biết ơn vì bất kỳ trợ giúp nào.

cảm ơn.

+2

Bạn đã bao giờ tìm ra vấn đề của mình chưa? Tôi đang gặp vấn đề tương tự và không thể khắc phục được. – Aaron

Trả lời

1

Theo mặc định, mũi sẽ điều khiển PYTHONPATH mà nó sử dụng. Bạn có thể thử tắt hành vi này bằng cách sử dụng công tắc -P.

+0

Cảm ơn bạn rất nhiều vì phản hồi của bạn, tôi đánh giá cao nó. Thật không may khi tôi làm "nosetests.exe -P" đầu ra là giống như trước – shearichard

0

Đây là một câu trả lời cho một trường hợp sử dụng rất cụ thể liên quan đếnPyUnit.

Tôi đã có một bộ kiểm tra đơn vị hoạt động tốt dưới PyDev. Một ngày, tôi đã thực hiện một lỗi đánh máy, và PyDev thêm một nhập khẩu tự động cho một phần của gói gấu trúc. Tôi thường giữ mã của tôi gấp lại vì vậy tôi không thấy điều này ngay lập tức.

Lỗi xuất hiện ở phần sau của bộ kiểm tra là "Lỗi: không thể nhập mũi".

Khi gỡ lỗi, tôi thấy rằng tên tệp dữ liệu có một trong các tên thư mục con được lặp lại. Có vẻ như nhân viên thử nghiệm đang thay đổi thư mục làm việc tới thư mục con chứa tệp .py, nhưng không quay trở lại thư mục dự án. Một cuộc gọi đến os.path.realpath ("_ file _") để thiết lập đường dẫn tệp dữ liệu đã trả về thư mục con thử nghiệm thay vì thư mục dự kiến ​​dự kiến, với hiệu ứng ròng mà dữ liệu không được tìm thấy và thử nghiệm không thành công.

"Sửa" mã thiết lập đường dẫn tệp dữ liệu đã giải quyết lỗi này. Tuy nhiên, khi tôi làm việc theo cách của tôi trở lại thông qua các lỗi còn lại, tôi phát hiện và loại bỏ các tuyên bố nhập khẩu không mong muốn. Tại thời điểm đó, đường dẫn tệp dữ liệu bắt đầu phát sinh lỗi, vì vậy tôi đã thay đổi nó trở về dạng ban đầu và mọi thứ đều ổn.

Vì vậy, ... nếu bạn thấy rằng bạn đột nhiên nhận được các lỗi "mũi" này, có thể là việc chỉnh sửa của bạn đã vô tình đưa ra một tuyên bố nhập khẩu khiến PyUnit không thể làm được.

Tôi đang thêm câu trả lời ở đây vì một phần trải nghiệm của tôi đang chạy các tệp thử nghiệm riêng lẻ với nguyên mẫu chưa được khai thác (từ menu ngữ cảnh PyDev) và cảm thấy rất bối rối về lý do tại sao chúng hoạt động theo cách đó chứ không phải khi chạy Á hậu thử nghiệm đầy đủ.