Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
tianlh
LightGBM-DCU
Commits
babf01c2
Commit
babf01c2
authored
May 11, 2017
by
Tsukasa OMOTO
Committed by
Guolin Ke
May 11, 2017
Browse files
python: use pytest for tests (#498)
https://docs.pytest.org/
parent
e2f3fc5e
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
33 additions
and
48 deletions
+33
-48
.travis.yml
.travis.yml
+7
-7
tests/c_api_test/test.py
tests/c_api_test/test.py
+17
-14
tests/python_package_test/test_basic.py
tests/python_package_test/test_basic.py
+2
-6
tests/python_package_test/test_engine.py
tests/python_package_test/test_engine.py
+2
-7
tests/python_package_test/test_plotting.py
tests/python_package_test/test_plotting.py
+0
-5
tests/python_package_test/test_sklearn.py
tests/python_package_test/test_sklearn.py
+5
-9
No files found.
.travis.yml
View file @
babf01c2
...
@@ -32,28 +32,28 @@ install:
...
@@ -32,28 +32,28 @@ install:
-
sudo apt-get install -y cmake
-
sudo apt-get install -y cmake
-
conda install --yes atlas numpy scipy scikit-learn pandas matplotlib
-
conda install --yes atlas numpy scipy scikit-learn pandas matplotlib
-
conda install --yes -c conda-forge boost=1.63.0
-
conda install --yes -c conda-forge boost=1.63.0
-
pip install pep8
-
pip install pep8
pytest
script
:
script
:
-
cd $TRAVIS_BUILD_DIR
-
cd $TRAVIS_BUILD_DIR
-
mkdir build && cd build && cmake -DUSE_MPI=ON ..&& make
-
mkdir build && cd build && cmake -DUSE_MPI=ON ..&& make
-
cd $TRAVIS_BUILD_DIR/tests/c_api_test && python test.py
-
cd $TRAVIS_BUILD_DIR/python-package && python setup.py install
-
cd $TRAVIS_BUILD_DIR/python-package && python setup.py install
-
cd $TRAVIS_BUILD_DIR/tests/python_package_test && python test_basic.py && python test_engine.py && python test_sklearn.py && python test_plotting.py
-
cd $TRAVIS_BUILD_DIR && pytest tests/c_api_test/test.py
-
cd $TRAVIS_BUILD_DIR && pytest tests/python_package_test
-
cd $TRAVIS_BUILD_DIR && pep8 --ignore=E501 --exclude=./compute,./docs .
-
cd $TRAVIS_BUILD_DIR && pep8 --ignore=E501 --exclude=./compute,./docs .
-
cd $TRAVIS_BUILD_DIR
-
cd $TRAVIS_BUILD_DIR
-
rm -rf build && mkdir build && cd build && cmake -DUSE_GPU=ON -DBOOST_ROOT="$HOME/miniconda/" -DOpenCL_INCLUDE_DIR=$AMDAPPSDK/include/ ..
-
rm -rf build && mkdir build && cd build && cmake -DUSE_GPU=ON -DBOOST_ROOT="$HOME/miniconda/" -DOpenCL_INCLUDE_DIR=$AMDAPPSDK/include/ ..
-
sed -i 's/std::string device_type = "cpu";/std::string device_type = "gpu";/' ../include/LightGBM/config.h
-
sed -i 's/std::string device_type = "cpu";/std::string device_type = "gpu";/' ../include/LightGBM/config.h
-
make
-
make
-
sed -i 's/std::string device_type = "gpu";/std::string device_type = "cpu";/' ../include/LightGBM/config.h
-
sed -i 's/std::string device_type = "gpu";/std::string device_type = "cpu";/' ../include/LightGBM/config.h
-
cd $TRAVIS_BUILD_DIR/tests/c_api_test && python test.py
-
cd $TRAVIS_BUILD_DIR/python-package && python setup.py install
-
cd $TRAVIS_BUILD_DIR/python-package && python setup.py install
-
cd $TRAVIS_BUILD_DIR/tests/python_package_test && python test_basic.py && python test_engine.py && python test_sklearn.py && python test_plotting.py
-
cd $TRAVIS_BUILD_DIR && pytest tests/c_api_test/test.py
-
cd $TRAVIS_BUILD_DIR && pytest tests/python_package_test
-
cd $TRAVIS_BUILD_DIR
-
cd $TRAVIS_BUILD_DIR
-
rm -rf build && mkdir build && cd build && cmake .. && make
-
rm -rf build && mkdir build && cd build && cmake .. && make
-
cd $TRAVIS_BUILD_DIR/tests/c_api_test && python test.py
-
cd $TRAVIS_BUILD_DIR/python-package && python setup.py install
-
cd $TRAVIS_BUILD_DIR/python-package && python setup.py install
-
cd $TRAVIS_BUILD_DIR/tests/python_package_test && python test_basic.py && python test_engine.py && python test_sklearn.py && python test_plotting.py
-
cd $TRAVIS_BUILD_DIR && pytest tests/c_api_test/test.py
-
cd $TRAVIS_BUILD_DIR && pytest tests/python_package_test
-
cd $TRAVIS_BUILD_DIR/tests/cpp_test && ../../lightgbm config=train.conf && ../../lightgbm config=predict.conf output_result=origin.pred
-
cd $TRAVIS_BUILD_DIR/tests/cpp_test && ../../lightgbm config=train.conf && ../../lightgbm config=predict.conf output_result=origin.pred
-
cd $TRAVIS_BUILD_DIR/build && make
-
cd $TRAVIS_BUILD_DIR/build && make
-
cd $TRAVIS_BUILD_DIR/tests/cpp_test && ../../lightgbm config=predict.conf output_result=ifelse.pred && python test.py
-
cd $TRAVIS_BUILD_DIR/tests/cpp_test && ../../lightgbm config=predict.conf output_result=ifelse.pred && python test.py
...
...
tests/c_api_test/test.py
View file @
babf01c2
...
@@ -4,14 +4,15 @@ import ctypes
...
@@ -4,14 +4,15 @@ import ctypes
import
os
import
os
import
numpy
as
np
import
numpy
as
np
import
pytest
from
scipy
import
sparse
from
scipy
import
sparse
def
LoadDll
():
def
LoadDll
():
if
os
.
name
==
'nt'
:
if
os
.
name
==
'nt'
:
lib_path
=
'../../windows/x64/DLL/lib_lightgbm.dll'
lib_path
=
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../windows/x64/DLL/lib_lightgbm.dll'
)
else
:
else
:
lib_path
=
'../../lib_lightgbm.so'
lib_path
=
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../lib_lightgbm.so'
)
lib
=
ctypes
.
cdll
.
LoadLibrary
(
lib_path
)
lib
=
ctypes
.
cdll
.
LoadLibrary
(
lib_path
)
return
lib
return
lib
...
@@ -34,6 +35,7 @@ def c_str(string):
...
@@ -34,6 +35,7 @@ def c_str(string):
return
ctypes
.
c_char_p
(
string
.
encode
(
'ascii'
))
return
ctypes
.
c_char_p
(
string
.
encode
(
'ascii'
))
@
pytest
.
mark
.
skip
def
test_load_from_file
(
filename
,
reference
):
def
test_load_from_file
(
filename
,
reference
):
ref
=
None
ref
=
None
if
reference
is
not
None
:
if
reference
is
not
None
:
...
@@ -52,10 +54,12 @@ def test_load_from_file(filename, reference):
...
@@ -52,10 +54,12 @@ def test_load_from_file(filename, reference):
return
handle
return
handle
@
pytest
.
mark
.
skip
def
test_save_to_binary
(
handle
,
filename
):
def
test_save_to_binary
(
handle
,
filename
):
LIB
.
LGBM_DatasetSaveBinary
(
handle
,
c_str
(
filename
))
LIB
.
LGBM_DatasetSaveBinary
(
handle
,
c_str
(
filename
))
@
pytest
.
mark
.
skip
def
test_load_from_csr
(
filename
,
reference
):
def
test_load_from_csr
(
filename
,
reference
):
data
=
[]
data
=
[]
label
=
[]
label
=
[]
...
@@ -93,6 +97,7 @@ def test_load_from_csr(filename, reference):
...
@@ -93,6 +97,7 @@ def test_load_from_csr(filename, reference):
return
handle
return
handle
@
pytest
.
mark
.
skip
def
test_load_from_csc
(
filename
,
reference
):
def
test_load_from_csc
(
filename
,
reference
):
data
=
[]
data
=
[]
label
=
[]
label
=
[]
...
@@ -130,6 +135,7 @@ def test_load_from_csc(filename, reference):
...
@@ -130,6 +135,7 @@ def test_load_from_csc(filename, reference):
return
handle
return
handle
@
pytest
.
mark
.
skip
def
test_load_from_mat
(
filename
,
reference
):
def
test_load_from_mat
(
filename
,
reference
):
data
=
[]
data
=
[]
label
=
[]
label
=
[]
...
@@ -164,17 +170,18 @@ def test_load_from_mat(filename, reference):
...
@@ -164,17 +170,18 @@ def test_load_from_mat(filename, reference):
return
handle
return
handle
@
pytest
.
mark
.
skip
def
test_free_dataset
(
handle
):
def
test_free_dataset
(
handle
):
LIB
.
LGBM_DatasetFree
(
handle
)
LIB
.
LGBM_DatasetFree
(
handle
)
def
test_dataset
():
def
test_dataset
():
train
=
test_load_from_file
(
'../../examples/binary_classification/binary.train'
,
None
)
train
=
test_load_from_file
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../examples/binary_classification/binary.train'
)
,
None
)
test
=
test_load_from_mat
(
'../../examples/binary_classification/binary.test'
,
train
)
test
=
test_load_from_mat
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../examples/binary_classification/binary.test'
)
,
train
)
test_free_dataset
(
test
)
test_free_dataset
(
test
)
test
=
test_load_from_csr
(
'../../examples/binary_classification/binary.test'
,
train
)
test
=
test_load_from_csr
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../examples/binary_classification/binary.test'
)
,
train
)
test_free_dataset
(
test
)
test_free_dataset
(
test
)
test
=
test_load_from_csc
(
'../../examples/binary_classification/binary.test'
,
train
)
test
=
test_load_from_csc
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../examples/binary_classification/binary.test'
)
,
train
)
test_free_dataset
(
test
)
test_free_dataset
(
test
)
test_save_to_binary
(
train
,
'train.binary.bin'
)
test_save_to_binary
(
train
,
'train.binary.bin'
)
test_free_dataset
(
train
)
test_free_dataset
(
train
)
...
@@ -183,8 +190,8 @@ def test_dataset():
...
@@ -183,8 +190,8 @@ def test_dataset():
def
test_booster
():
def
test_booster
():
train
=
test_load_from_mat
(
'../../examples/binary_classification/binary.train'
,
None
)
train
=
test_load_from_mat
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../examples/binary_classification/binary.train'
)
,
None
)
test
=
test_load_from_mat
(
'../../examples/binary_classification/binary.test'
,
train
)
test
=
test_load_from_mat
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../examples/binary_classification/binary.test'
)
,
train
)
booster
=
ctypes
.
c_void_p
()
booster
=
ctypes
.
c_void_p
()
LIB
.
LGBM_BoosterCreate
(
train
,
c_str
(
"app=binary metric=auc num_leaves=31 verbose=0"
),
ctypes
.
byref
(
booster
))
LIB
.
LGBM_BoosterCreate
(
train
,
c_str
(
"app=binary metric=auc num_leaves=31 verbose=0"
),
ctypes
.
byref
(
booster
))
LIB
.
LGBM_BoosterAddValidData
(
booster
,
test
)
LIB
.
LGBM_BoosterAddValidData
(
booster
,
test
)
...
@@ -204,7 +211,7 @@ def test_booster():
...
@@ -204,7 +211,7 @@ def test_booster():
num_total_model
=
ctypes
.
c_long
()
num_total_model
=
ctypes
.
c_long
()
LIB
.
LGBM_BoosterCreateFromModelfile
(
c_str
(
'model.txt'
),
ctypes
.
byref
(
num_total_model
),
ctypes
.
byref
(
booster2
))
LIB
.
LGBM_BoosterCreateFromModelfile
(
c_str
(
'model.txt'
),
ctypes
.
byref
(
num_total_model
),
ctypes
.
byref
(
booster2
))
data
=
[]
data
=
[]
inp
=
open
(
'../../examples/binary_classification/binary.test'
,
'r'
)
inp
=
open
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../examples/binary_classification/binary.test'
)
,
'r'
)
for
line
in
inp
.
readlines
():
for
line
in
inp
.
readlines
():
data
.
append
([
float
(
x
)
for
x
in
line
.
split
(
'
\t
'
)[
1
:]])
data
.
append
([
float
(
x
)
for
x
in
line
.
split
(
'
\t
'
)[
1
:]])
inp
.
close
()
inp
.
close
()
...
@@ -223,9 +230,5 @@ def test_booster():
...
@@ -223,9 +230,5 @@ def test_booster():
50
,
50
,
ctypes
.
byref
(
num_preb
),
ctypes
.
byref
(
num_preb
),
preb
.
ctypes
.
data_as
(
ctypes
.
POINTER
(
ctypes
.
c_double
)))
preb
.
ctypes
.
data_as
(
ctypes
.
POINTER
(
ctypes
.
c_double
)))
LIB
.
LGBM_BoosterPredictForFile
(
booster2
,
c_str
(
'../../examples/binary_classification/binary.test'
),
0
,
0
,
50
,
c_str
(
'preb.txt'
))
LIB
.
LGBM_BoosterPredictForFile
(
booster2
,
c_str
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../examples/binary_classification/binary.test'
)
)
,
0
,
0
,
50
,
c_str
(
'preb.txt'
))
LIB
.
LGBM_BoosterFree
(
booster2
)
LIB
.
LGBM_BoosterFree
(
booster2
)
test_dataset
()
test_booster
()
tests/python_package_test/test_basic.py
View file @
babf01c2
# coding: utf-8
# coding: utf-8
# pylint: skip-file
# pylint: skip-file
import
os
import
os
import
subprocess
import
tempfile
import
tempfile
import
unittest
import
unittest
...
@@ -51,9 +52,4 @@ class TestBasic(unittest.TestCase):
...
@@ -51,9 +52,4 @@ class TestBasic(unittest.TestCase):
# we need to check the consistency of model file here, so test for exact equal
# we need to check the consistency of model file here, so test for exact equal
self
.
assertEqual
(
*
preds
)
self
.
assertEqual
(
*
preds
)
# check pmml
# check pmml
os
.
system
(
'python ../../pmml/pmml.py model.txt'
)
subprocess
.
call
([
'python'
,
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../pmml/pmml.py'
),
'model.txt'
])
print
(
"----------------------------------------------------------------------"
)
print
(
"running test_basic.py"
)
unittest
.
main
()
tests/python_package_test/test_engine.py
View file @
babf01c2
...
@@ -194,8 +194,8 @@ class TestEngine(unittest.TestCase):
...
@@ -194,8 +194,8 @@ class TestEngine(unittest.TestCase):
folds
=
tss
.
split
(
X_train
)
folds
=
tss
.
split
(
X_train
)
lgb
.
cv
(
params_with_metric
,
lgb_train
,
num_boost_round
=
10
,
folds
=
folds
,
verbose_eval
=
False
)
lgb
.
cv
(
params_with_metric
,
lgb_train
,
num_boost_round
=
10
,
folds
=
folds
,
verbose_eval
=
False
)
# lambdarank
# lambdarank
X_train
,
y_train
=
load_svmlight_file
(
'../../examples/lambdarank/rank.train'
)
X_train
,
y_train
=
load_svmlight_file
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../examples/lambdarank/rank.train'
)
)
q_train
=
np
.
loadtxt
(
'../../examples/lambdarank/rank.train.query'
)
q_train
=
np
.
loadtxt
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../examples/lambdarank/rank.train.query'
)
)
params_lambdarank
=
{
'objective'
:
'lambdarank'
,
'verbose'
:
-
1
}
params_lambdarank
=
{
'objective'
:
'lambdarank'
,
'verbose'
:
-
1
}
lgb_train
=
lgb
.
Dataset
(
X_train
,
y_train
,
group
=
q_train
)
lgb_train
=
lgb
.
Dataset
(
X_train
,
y_train
,
group
=
q_train
)
lgb
.
cv
(
params_lambdarank
,
lgb_train
,
num_boost_round
=
10
,
nfold
=
3
,
metrics
=
'l2'
,
verbose_eval
=
False
)
lgb
.
cv
(
params_lambdarank
,
lgb_train
,
num_boost_round
=
10
,
nfold
=
3
,
metrics
=
'l2'
,
verbose_eval
=
False
)
...
@@ -286,8 +286,3 @@ class TestEngine(unittest.TestCase):
...
@@ -286,8 +286,3 @@ class TestEngine(unittest.TestCase):
np
.
testing
.
assert_almost_equal
(
pred0
,
pred2
)
np
.
testing
.
assert_almost_equal
(
pred0
,
pred2
)
np
.
testing
.
assert_almost_equal
(
pred0
,
pred3
)
np
.
testing
.
assert_almost_equal
(
pred0
,
pred3
)
np
.
testing
.
assert_almost_equal
(
pred0
,
pred4
)
np
.
testing
.
assert_almost_equal
(
pred0
,
pred4
)
print
(
"----------------------------------------------------------------------"
)
print
(
"running test_engine.py"
)
unittest
.
main
()
tests/python_package_test/test_plotting.py
View file @
babf01c2
...
@@ -104,8 +104,3 @@ class TestBasic(unittest.TestCase):
...
@@ -104,8 +104,3 @@ class TestBasic(unittest.TestCase):
self
.
assertEqual
(
ax2
.
get_title
(),
''
)
self
.
assertEqual
(
ax2
.
get_title
(),
''
)
self
.
assertEqual
(
ax2
.
get_xlabel
(),
''
)
self
.
assertEqual
(
ax2
.
get_xlabel
(),
''
)
self
.
assertEqual
(
ax2
.
get_ylabel
(),
''
)
self
.
assertEqual
(
ax2
.
get_ylabel
(),
''
)
print
(
"----------------------------------------------------------------------"
)
print
(
"running test_plotting.py"
)
unittest
.
main
()
tests/python_package_test/test_sklearn.py
View file @
babf01c2
# coding: utf-8
# coding: utf-8
# pylint: skip-file
# pylint: skip-file
import
math
import
math
import
os
import
unittest
import
unittest
import
lightgbm
as
lgb
import
lightgbm
as
lgb
...
@@ -52,10 +53,10 @@ class TestSklearn(unittest.TestCase):
...
@@ -52,10 +53,10 @@ class TestSklearn(unittest.TestCase):
self
.
assertAlmostEqual
(
ret
,
gbm
.
evals_result
[
'valid_0'
][
'multi_logloss'
][
gbm
.
best_iteration
-
1
],
places
=
5
)
self
.
assertAlmostEqual
(
ret
,
gbm
.
evals_result
[
'valid_0'
][
'multi_logloss'
][
gbm
.
best_iteration
-
1
],
places
=
5
)
def
test_lambdarank
(
self
):
def
test_lambdarank
(
self
):
X_train
,
y_train
=
load_svmlight_file
(
'../../examples/lambdarank/rank.train'
)
X_train
,
y_train
=
load_svmlight_file
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../examples/lambdarank/rank.train'
)
)
X_test
,
y_test
=
load_svmlight_file
(
'../../examples/lambdarank/rank.test'
)
X_test
,
y_test
=
load_svmlight_file
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../examples/lambdarank/rank.test'
)
)
q_train
=
np
.
loadtxt
(
'../../examples/lambdarank/rank.train.query'
)
q_train
=
np
.
loadtxt
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../examples/lambdarank/rank.train.query'
)
)
q_test
=
np
.
loadtxt
(
'../../examples/lambdarank/rank.test.query'
)
q_test
=
np
.
loadtxt
(
os
.
path
.
join
(
os
.
path
.
dirname
(
os
.
path
.
realpath
(
__file__
)),
'../../examples/lambdarank/rank.test.query'
)
)
gbm
=
lgb
.
LGBMRanker
()
gbm
=
lgb
.
LGBMRanker
()
gbm
.
fit
(
X_train
,
y_train
,
group
=
q_train
,
eval_set
=
[(
X_test
,
y_test
)],
gbm
.
fit
(
X_train
,
y_train
,
group
=
q_train
,
eval_set
=
[(
X_test
,
y_test
)],
eval_group
=
[
q_test
],
eval_at
=
[
1
,
3
],
early_stopping_rounds
=
5
,
verbose
=
False
,
eval_group
=
[
q_test
],
eval_at
=
[
1
,
3
],
early_stopping_rounds
=
5
,
verbose
=
False
,
...
@@ -150,8 +151,3 @@ class TestSklearn(unittest.TestCase):
...
@@ -150,8 +151,3 @@ class TestSklearn(unittest.TestCase):
self
.
assertEqual
(
len
(
pred_origin
),
len
(
pred_pickle
))
self
.
assertEqual
(
len
(
pred_origin
),
len
(
pred_pickle
))
for
preds
in
zip
(
pred_origin
,
pred_pickle
):
for
preds
in
zip
(
pred_origin
,
pred_pickle
):
self
.
assertAlmostEqual
(
*
preds
,
places
=
5
)
self
.
assertAlmostEqual
(
*
preds
,
places
=
5
)
print
(
"----------------------------------------------------------------------"
)
print
(
"running test_sklearn.py"
)
unittest
.
main
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment