Tôi đang cố gắng tìm ra cách python setup.py test
chạy tương đương với python -m unittest discover
. Tôi không muốn sử dụng tập lệnh run_tests.py và tôi không muốn sử dụng bất kỳ công cụ kiểm tra bên ngoài nào (như nose
hoặc py.test
). Sẽ ổn nếu giải pháp chỉ hoạt động trên python 2.7.
Trong setup.py
, tôi nghĩ rằng tôi cần thêm một cái gì đó vào các trường test_suite
và / hoặc test_loader
trong cấu hình, nhưng dường như tôi không thể tìm thấy một tổ hợp nào hoạt động chính xác:
config = {
'name': name,
'version': version,
'url': url,
'test_suite': '???',
'test_loader': '???',
}
Điều này có khả thi bằng cách chỉ unittest
được xây dựng trong python 2.7 không?
FYI, cấu trúc dự án của tôi trông như thế này:
project/
package/
__init__.py
module.py
tests/
__init__.py
test_module.py
run_tests.py <- I want to delete this
setup.py
Cập nhật : Điều này có thể xảy ra với unittest2
nhưng tôi muốn tìm thứ gì đó tương đương chỉ bằng cách sử dụngunittest
Từ https://pypi.python.org/pypi/unittest2
unittest2 bao gồm một bộ thu thử nghiệm tương thích với setuptools rất cơ bản. Chỉ định test_suite = 'unittest2.collector' trong setup.py của bạn. Điều này bắt đầu khám phá thử nghiệm với các tham số mặc định từ thư mục chứa setup.py, vì vậy nó có lẽ hữu ích nhất làm ví dụ (xem unittest2 / collector.py).
Hiện tại, tôi chỉ đang sử dụng một tập lệnh có tên run_tests.py
, nhưng tôi hy vọng tôi có thể loại bỏ điều này bằng cách chuyển sang một giải pháp chỉ sử dụng python setup.py test
.
Đây là những run_tests.py
gì tôi hy vọng sẽ xóa:
import unittest
if __name__ == '__main__':
# use the default shared TestLoader instance
test_loader = unittest.defaultTestLoader
# use the basic test runner that outputs to sys.stderr
test_runner = unittest.TextTestRunner()
# automatically discover all tests in the current dir of the form test*.py
# NOTE: only works for python 2.7 and later
test_suite = test_loader.discover('.')
# run the test suite
test_runner.run(test_suite)