2010-02-14 21 views
14

Tôi vẫn nhận được đầu của tôi xung quanh tuyên bố import. Nếu tôi có 2 thư mục trong cùng cấp:Làm thế nào để kiểm tra đơn vị Python của tôi để nhập các mô-đun thử nghiệm nếu chúng ở trong các thư mục chị em?

  1. src
  2. kiểm tra

Làm thế nào để làm cho các tập tin trong pytest nhập khẩu các module trong src? Có một giải pháp tốt hơn (như đặt một thư mục bên trong khác?)

+1

Câu hỏi rất giống với: http://stackoverflow.com/questions/1896918/ –

Trả lời

9

mã bạn muốn là sử dụng src/module_name.py

from src import module_name 

và thư mục gốc nằm trên PYTHONPATH của bạn ví dụ bạn chạy từ thư mục gốc

Cấu trúc thư mục của bạn là cấu trúc mà tôi sử dụng nhưng thay vào đó hãy sử dụng tên mẫu thay vì src. Tôi có cấu trúc này từ J Calderone's blog và tương tự như A google blog

+0

nó không hoạt động = ( –

+0

có thể gói (thư mục) có dấu gạch dưới ở giữa tên? –

+1

Ngoài ra, hãy đảm bảo rằng Thư mục src là một gói, bằng cách thêm một tệp '' __init __. py''. – codeape

7

Hãy thử điều này:

import sys 
import os 
sys.path.append(os.path.join('..', 'src')) 
import module_in_src_folder 

chỉnh sửa để hỗ trợ bất kỳ nền tảng

+0

Được giảm giá vì điều này liên quan đến việc gây rối với PYTHONPATH. –

0

tôi có chính xác tình hình giống như OP với tất cả các dự án python Tôi viết:

  • Thư mục dự án
    1. src
    2. kiểm tra

Tất cả các mô-đun, cho dù trong src, hoặc kiểm tra, hoặc thư mục con trong số này luôn sử dụng hình thức import rằng Mark cho thấy trong câu trả lời của mình:

from src import module_name 

Những gì tôi đã làm là viết một mô-đun đặt trong Project Folder và đệ quy phát hiện tất cả các mô-đun thử nghiệm trong thư mục kiểm tra và nhận được unittest để chạy tất cả các thử nghiệm đó. Khi python đang chạy trong Project Folder, thì các mô-đun có liên quan đến thư mục hoạt động.

Điều này có nghĩa là các thử nghiệm giống như bất kỳ ứng dụng khách nào khác muốn mô-đun từ src.

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