j-andrews7 / kenpompy

A simple yet comprehensive web scraper for kenpom.com.
https://kenpompy.readthedocs.io/en/latest/?badge=latest
GNU General Public License v3.0
70 stars 21 forks source link

FAILED tests/test_summary.py::test_get_height #21

Closed esqew closed 2 years ago

esqew commented 2 years ago

One test out of the suite is currently failing:

FAILED tests/test_summary.py::test_get_height - AssertionError: assert ['Louisville',\n 'ACC',\n '76.8',\n '181',\n '+0.6',\n '87',\n '+1.3',\n '44',...

Full test log:

================================================================= test session starts ==================================================================
platform darwin -- Python 3.8.9, pytest-7.1.2, pluggy-1.0.0 -- /Applications/Xcode.app/Contents/Developer/usr/bin/python3
cachedir: .pytest_cache
rootdir: <redacted>/kenpompy
collected 17 items                                                                                                                                     

tests/test_fanmatch.py::test_fanmatch PASSED                                                                                                     [  5%]
tests/test_misc.py::test_get_pomeroy_ratings PASSED                                                                                              [ 11%]
tests/test_misc.py::test_get_trends PASSED                                                                                                       [ 17%]
tests/test_misc.py::test_get_refs PASSED                                                                                                         [ 23%]
tests/test_misc.py::test_get_hca PASSED                                                                                                          [ 29%]
tests/test_misc.py::test_get_arenas PASSED                                                                                                       [ 35%]
tests/test_misc.py::test_get_gameattribs PASSED                                                                                                  [ 41%]
tests/test_misc.py::test_get_program_ratings PASSED                                                                                              [ 47%]
tests/test_summary.py::test_get_efficiency PASSED                                                                                                [ 52%]
tests/test_summary.py::test_get_fourfactors PASSED                                                                                               [ 58%]
tests/test_summary.py::test_get_teamstats PASSED                                                                                                 [ 64%]
tests/test_summary.py::test_get_pointdist PASSED                                                                                                 [ 70%]
tests/test_summary.py::test_get_height FAILED                                                                                                    [ 76%]
tests/test_summary.py::test_get_playerstats PASSED                                                                                               [ 82%]
tests/test_summary.py::test_get_kpoy PASSED                                                                                                      [ 88%]
tests/test_team.py::test_get_valid_teams PASSED                                                                                                  [ 94%]
tests/test_team.py::test_get_schedule PASSED                                                                                                     [100%]

======================================================================= FAILURES =======================================================================
___________________________________________________________________ test_get_height ____________________________________________________________________

browser = <mechanicalsoup.stateful_browser.StatefulBrowser object at 0x12b014340>

    def test_get_height(browser):
        expected = ['Louisville', 'ACC', '76.8', '181', '+0.6', '87', '+1.3', '44', '-0.1', '190', '-0.1', '189', '-0.9',
                                '272', '-0.5', '233', '1.92', '102', '33.3', '97', '36.7', '273']

        df = kpsum.get_height(browser, season = '2019')
>       assert [str(i) for i in df[df.Team == 'Louisville'].iloc[0].to_list()] == expected
E    AssertionError: assert ['Louisville',\n 'ACC',\n '76.8',\n '181',\n '+0.6',\n '87',\n '+1.3',\n '44',\n '-0.1',\n '190',\n '-0.1',\n '189',\n '-0.9',\n '272',\n '-0.5',\n '233',\n '2.18',\n '29',\n '33.3',\n '97',\n '36.7',\n '273'] == ['Louisville',\n 'ACC',\n '76.8',\n '181',\n '+0.6',\n '87',\n '+1.3',\n '44',\n '-0.1',\n '190',\n '-0.1',\n '189',\n '-0.9',\n '272',\n '-0.5',\n '233',\n '1.92',\n '102',\n '33.3',\n '97',\n '36.7',\n '273']
E      At index 16 diff: '2.18' != '1.92'
E      Full diff:
E        [
E         'Louisville',
E         'ACC',
E         '76.8',
E         '181',
E         '+0.6',
E         '87',
E         '+1.3',
E         '44',
E         '-0.1',
E         '190',
E         '-0.1',
E         '189',
E         '-0.9',
E         '272',
E         '-0.5',
E         '233',
E      -  '1.92',
E      +  '2.18',
E      -  '102',
E      ?   --
E      +  '29',
E      ?    +
E         '33.3',
E         '97',
E         '36.7',
E         '273',
E        ]

tests/test_summary.py:66: AssertionError
esqew commented 2 years ago

After further research, it seems KenPom somewhat recently changed the methodology on how Experience is quantified - from his (undated) blog post:

So a solution is needed. And that solution is to measure a player’s experience by minutes played in previous seasons. I have more or less scaled this new measure to the previous measure. The new measure can be thought of as average number of full D-1 seasons played by the current roster, weighted by minutes played.

Seems it's likely this test is failing since it's using data from the old methodology to test - it's probably just a matter of updating the constants in the test file to be asserted against.

j-andrews7 commented 2 years ago

Yeah I saw this one during my tests as well. You can correct the test assertion or I will before release.

On Mon, Aug 1, 2022, 3:12 PM Sean Quinn @.***> wrote:

After further research, it seems KenPom somewhat recently changed the methodology on how Experience is quantified - from his (undated) blog post https://kenpom.com/blog/are-you-experienced/:

So a solution is needed. And that solution is to measure a player’s experience by minutes played in previous seasons. I have more or less scaled this new measure to the previous measure. The new measure can be thought of as average number of full D-1 seasons played by the current roster, weighted by minutes played.

Seems it's likely this test is failing since it's using data from the old methodology to test - it's probably just a matter of updating the constants in the test file to be asserted against.

— Reply to this email directly, view it on GitHub https://github.com/j-andrews7/kenpompy/issues/21#issuecomment-1201664104, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACOAQNB7ZHBZYK7NZNPL2QLVXAVUBANCNFSM55IW7BPQ . You are receiving this because you are subscribed to this thread.Message ID: @.***>

j-andrews7 commented 2 years ago

Latest release (v0.3.2) fixes this, available via pip now. Thanks for the help.