Tôi đã cố gắng để thực hiện một hệ thống thử nghiệm nguồn đơn cho phép thử nghiệm tự động trên nhiều phiên bản Python bằng cách sử dụng độc tố + nosetests.python - Chạy độc tố + nosetests trên một Python 3.2 testenv
Vấn đề là, tôi không thể làm cho nó hoạt động bất cứ khi nào tôi thử nghiệm với Python 3.2. Mọi thứ hoạt động tốt nếu tôi loại trừ Python 3.2.
Dưới đây là tôi tox.ini
:
[tox]
envlist = py25,py26,py27,py32,pypy,jython
[testenv]
commands =
nosetests []
deps =
nose
mock
[testenv:py32]
commands =
nosetests []
và ~/.noserc
tôi:
[nosetests]
verbosity=2
with-doctest=1
tôi đã thiết lập các use_2to3
cờ để True
trong setup.py của tôi, nhưng lỗi này vẫn tiếp tục hiển thị: NameError: global name 'basestring' is not defined
. Có vẻ như tôi đang thiếu một số thiết lập mà nên làm cho công việc 2to3
, nhưng tôi không biết nó là gì.
Ngoài ra, tôi đã thử thay thế nosetests []
bằng python setup.py test
trong cài đặt testenv:py32
. Thật không may, không chỉ lỗi tương tự tiếp tục hiển thị, nó cũng giới thiệu một lỗi khác: Error in atexit._run_exitfuncs: TypeError: 'NoneType' object is not callable
.
Mọi con trỏ?
EDIT: thêm mã trong setup.py
, trong trường hợp đó là hữu ích:
# handle python 3
if sys.version_info >= (3,):
use_2to3 = True
else:
use_2to3 = False
và đâu đó trong setup()
: use_2to3 = use_2to3
Nếu bạn đang sử dụng 2to3, bạn cần đảm bảo nó chạy 'setup.py' và các thử nghiệm đối với phiên bản được tạo, thay vì thử nghiệm dựa vào nguồn chính. Tôi đã không sử dụng 'độc tố ', nhưng nói chung bạn có thể chạy' python setup.py build', sau đó thay đổi vào thư mục build, và chạy nosetests. –
Tôi nghĩ đó là những gì độc tố đang làm. Nó làm cho các virtualenv riêng biệt cho các phiên bản/triển khai python riêng biệt này. Ví dụ: nó phát ra lỗi nếu tôi không bao gồm '' từ __future__ nhập with_statement'' trong python2.5 env, nhưng không phải trong python2.7. Chuyển đổi '' 2to3'' dường như đang hoạt động, nhưng vì lý do nào đó '' độc tố' không tự động kiểm tra ... – bow
Đảm bảo rằng nó không chạy 'nosetests' từ thư mục nguồn, sẽ có mã chưa được dịch. –