Exemplo n.º 1
0
def test_download_asos_data_start_after_end():
    # Setup
    start = meteogram.datetime.datetime(2018, 8, 1, 12)
    end = meteogram.datetime.datetime(2018, 7, 1, 12)

    # Exercise/Verify
    with pytest.raises(ValueError):
        meteogram.build_asos_request_url('AMW', start, end)
Exemplo n.º 2
0
def test_download_asos_data_in_future():
    """Test for correct behavior when asking for non-existant (future) data."""
    # Setup
    start = datetime(2999, 10, 10, 10)
    end = datetime(2999, 11, 10, 10)

    # Exercise/Verify
    with pytest.raises(ValueError):
        meteogram.build_asos_request_url("AMW", start, end)
Exemplo n.º 3
0
def test_download_asos_data_start_after_end():
    """Test for correct behavior when start and end times are reversed."""
    # Setup
    start = datetime(2018, 8, 1, 12)
    end = datetime(2018, 7, 1, 12)

    # Exercise/Verify
    with pytest.raises(ValueError):
        meteogram.build_asos_request_url("AMW", start, end)
Exemplo n.º 4
0
def test_download_asos_data():
    """Test downloading ASOS data."""
    # Setup
    url = meteogram.build_asos_request_url('AMW')

    # Exercise
    df = meteogram.download_asos_data(url)

    # Verify
    first_row_truth = mtesting.pd.Series({
        'station_id':
        'AMW',
        'station_name':
        'Ames',
        'latitude_deg':
        41.990439,
        'longitude_deg':
        -93.618515,
        'UTC':
        mtesting.pd.Timestamp('2018-03-25 12:00:00'),
        'temperature_degF':
        29,
        'dewpoint_degF':
        24,
        'wind_speed_knots':
        8,
        'wind_direction_degrees':
        113
    })

    mtesting.assert_dataseries_equal(df.iloc[0], first_row_truth)
Exemplo n.º 5
0
def test_build_asos_request_url_single_digit_datetimes():
    """
    Test building URL with single digit month and day.
    Setup
    Exercise
    Verify
    Cleanup
    """
    # Setup
    # station, start_date, end_date
    start = meteogram.datetime.datetime(2018, 1, 2, 3, 4)
    end = meteogram.datetime.datetime(2018, 5, 6, 7, 8)
    station = 'FSD'

    # Exercise
    result_url = meteogram.build_asos_request_url(station, start, end)

    truth_url = ('https://mesonet.agron.iastate.edu/request/asos/1min_dl.php?'
                 'station%5B%5D=FSD&tz=UTC&year1=2018&month1=01&day1=02&'
                 'hour1=03&minute1=04&year2=2018&month2=05&day2=06&hour2=07&'
                 'minute2=08&vars%5B%5D=tmpf&vars%5B%5D=dwpf&vars%5B%5D=sknt&'
                 'vars%5B%5D=drct&sample=1min&what=view&delim=comma&gis=yes')

    # Verify
    assert (result_url == truth_url)
def test_build_asos_request_url_default():
    #Setup  - none

    #exercise
    url = meteogram.build_asos_request_url('MLI')

    # Verify
    truth = 'https://mesonet.agron.iastate.edu/request/asos/1min_dl.php?station%5B%5D=MLI&tz=UTC&year1=2018&month1=03&day1=25&hour1=12&minute1=00&year2=2018&month2=03&day2=26&hour2=12&minute2=00&vars%5B%5D=tmpf&vars%5B%5D=dwpf&vars%5B%5D=sknt&vars%5B%5D=drct&sample=1min&what=view&delim=comma&gis=yes'
    assert url == truth
Exemplo n.º 7
0
def test_build_asos_request_url(start, end, station, expected):
    """
    Test URL building for requests
    """
    # Setup - done by parameterized fixture

    # Exercise
    url = meteogram.build_asos_request_url(station, start, end)

    # Verify
    assert (url == expected)
def test_build_asos_request_url_defaults() -> None:
    """Make sure that we get the correct URL when we are using defaults
    """
    # Setup - None
    station = "FSD"

    # Exercise
    url = meteogram.build_asos_request_url(station=station)

    # Verify
    desired = "https://mesonet.agron.iastate.edu/request/asos/1min_dl.php?station%5B%5D=FSD&tz=UTC&year1=2018&month1=03&day1=25&hour1=12&minute1=00&year2=2018&month2=03&day2=26&hour2=12&minute2=00&vars%5B%5D=tmpf&vars%5B%5D=dwpf&vars%5B%5D=sknt&vars%5B%5D=drct&sample=1min&what=view&delim=comma&gis=yes"
    assert url == desired
Exemplo n.º 9
0
def test_build_asos_request_url_double_digit_datetimes():
    """
    Test building URL with double digit month and day.
    """
    # setup, note -> if you change data value you need to adapt string
    start = datetime(2018, 10, 11, 11)
    end = datetime(2018, 10, 16, 11)
    station = "FSD"
    expected_url = 'https://mesonet.agron.iastate.edu/request/asos/1min_dl.php?station%5B%5D=FSD&tz=UTC&year1=2018&month1=10&day1=11&hour1=11&minute1=00&year2=2018&month2=10&day2=16&hour2=11&minute2=00&vars%5B%5D=tmpf&vars%5B%5D=dwpf&vars%5B%5D=sknt&vars%5B%5D=drct&sample=1min&what=view&delim=comma&gis=yes'
    # excersize
    url = meteogram.build_asos_request_url(station, start, end)
    # verify
    assert url == expected_url
Exemplo n.º 10
0
def test_build_asos_request_url_default_end_only():
    """
    Test building URL with default end date
    """
    # Setup
    start_date = datetime(2018, 3, 24, 12)

    # Exercise
    url = meteogram.build_asos_request_url('MLI', start_date=start_date)

    # Verify
    truth = 'https://mesonet.agron.iastate.edu/request/asos/1min_dl.php?station%5B%5D=MLI&tz=UTC&year1=2018&month1=03&day1=24&hour1=12&minute1=00&year2=2018&month2=03&day2=26&hour2=12&minute2=00&vars%5B%5D=tmpf&vars%5B%5D=dwpf&vars%5B%5D=sknt&vars%5B%5D=drct&sample=1min&what=view&delim=comma&gis=yes'
    assert truth == url
Exemplo n.º 11
0
def test_build_asos_request_url(start, end, station, expected):
    """
    Test URL building for requests
    :param start: start date in datetime
    :param end: end date in datetime:
    :param station: station name in string
    :param expected: expected URL in string
    """
    # Setup - Done by parameterized fixture
    # Exercise
    url = meteogram.build_asos_request_url(station, start, end)

    # Verify
    assert url == expected
Exemplo n.º 12
0
def test_build_asos_request_url_double_digit_datetimes():
    """
    Test building URL with double digit month and day.
    """
    # Setup
    start = datetime.datetime(2018, 10, 11, 11)
    end = datetime.datetime(2018, 10, 16, 11)
    station = 'FSD'

    #Exercise
    result_url = meteogram.build_asos_request_url(station, start, end)

    #verify
    truth_url = 'https://mesonet.agron.iastate.edu/request/asos/1min_dl.php?station%5B%5D=FSD&tz=UTC&year1=2018&month1=10&day1=11&hour1=11&minute1=00&year2=2018&month2=10&day2=16&hour2=11&minute2=00&vars%5B%5D=tmpf&vars%5B%5D=dwpf&vars%5B%5D=sknt&vars%5B%5D=drct&sample=1min&what=view&delim=comma&gis=yes'
    assert result_url == truth_url
Exemplo n.º 13
0
def test_plotting_meteogram_defaults():
    # setup
    url = meteogram.build_asos_request_url('AMW',\
        start_date=datetime(2018,3,26),\
        end_date=datetime(2018,3,27))

    df = meteogram.download_asos_data(url)

    # print(df)
    if df.empty == False:
        # exersize
        fig, _, _, _ = meteogram.plot_meteogram(df)

        # verify - needs to return image to
        return fig
    else:
        Exception("No dataframe received from download_asos_data")
def test_build_asos_request_url_single_digit_datetimes():
    """
    Test building URL with single digit month and day.
    """
    # Setup
    start = datetime(2018, 1, 5, 1)
    end = datetime(2018, 1, 9, 1)
    station = "FSD"

    # Exercise
    result_url = meteogram.build_asos_request_url(station=station,
                                                  start_date=start,
                                                  end_date=end)

    # Verify
    desired_url = "https://mesonet.agron.iastate.edu/request/asos/1min_dl.php?station%5B%5D=FSD&tz=UTC&year1=2018&month1=01&day1=05&hour1=01&minute1=00&year2=2018&month2=01&day2=09&hour2=01&minute2=00&vars%5B%5D=tmpf&vars%5B%5D=dwpf&vars%5B%5D=sknt&vars%5B%5D=drct&sample=1min&what=view&delim=comma&gis=yes"
    assert result_url == desired_url
Exemplo n.º 15
0
def test_build_asos_request_url_double_digit_datetimes():
    """
    Test building URL with double digit month and day.
    """

    station = "FSD"
    start_date = datetime.datetime(2019, 11, 11, 16)
    end_date = datetime.datetime(2019, 11, 25, 15)

    des = (
        "https://mesonet.agron.iastate.edu/request/asos/1min_dl.php?station%5B%5D=FSD&tz=UTC&year1=2019"
        "&month1=11&day1=11&hour1=16&minute1=00&year2=2019&month2=11&day2=25&hour2=15&minute2=00&"
        "vars%5B%5D=tmpf&vars%5B%5D=dwpf&vars%5B%5D=sknt&vars%5B%5D=drct&sample=1min&what=view&delim=comma&gis=yes"
    )

    res_srt = meteogram.build_asos_request_url(station, start_date, end_date)

    assert res_srt == des
Exemplo n.º 16
0
def test_build_asos_request_url_with_only_end_given():
    """
    Test with no end date given, only start date
    """
    # Setup
    station = 'FSD'
    end = meteogram.datetime.datetime(2018, 2, 16, 4)

    # Exercise
    result_url = meteogram.build_asos_request_url(station, None, end)

    # test time: 24 hrs before end -  datetime.datetime(2018, 2, 15, 4)
    truth_url = ('https://mesonet.agron.iastate.edu/request/asos/1min_dl.php?'
                 'station%5B%5D=FSD&tz=UTC&year1=2018&month1=02&day1=15&'
                 'hour1=04&minute1=00&year2=2018&month2=02&day2=16&hour2=04&'
                 'minute2=00&vars%5B%5D=tmpf&vars%5B%5D=dwpf&vars%5B%5D=sknt&'
                 'vars%5B%5D=drct&sample=1min&what=view&delim=comma&gis=yes')
    # Verify
    assert (result_url == truth_url)
Exemplo n.º 17
0
def test_build_asos_request_url_with_defaults():
    """
    Test with no start or end date given
    """
    # Setup
    # station only
    station = 'FSD'

    # Exercise
    result_url = meteogram.build_asos_request_url(station)

    # test time: meteogram.datetime.datetime(2018, 3, 26, 12)
    truth_url = ('https://mesonet.agron.iastate.edu/request/asos/1min_dl.php?'
                 'station%5B%5D=FSD&tz=UTC&year1=2018&month1=03&day1=25&'
                 'hour1=12&minute1=00&year2=2018&month2=03&day2=26&hour2=12'
                 '&minute2=00&vars%5B%5D=tmpf&vars%5B%5D=dwpf&vars%5B%5D=sknt&'
                 'vars%5B%5D=drct&sample=1min&what=view&delim=comma&gis=yes')
    # Verify
    assert (result_url == truth_url)
Exemplo n.º 18
0
def test_build_asos_request_url_double_digit_datetimes():
    """
    Test building URL with double digit month and day.
    """
    # Setup
    station = 'FSD'
    # two-digits in the datetime
    start = meteogram.datetime.datetime(2018, 11, 12, 13, 14)
    end = meteogram.datetime.datetime(2018, 11, 12, 15, 16)

    # Exercise
    result_url = meteogram.build_asos_request_url(station, start, end)
    truth_url = ('https://mesonet.agron.iastate.edu/request/asos/1min_dl.php?'
                 'station%5B%5D=FSD&tz=UTC&year1=2018&month1=11&day1=12&'
                 'hour1=13&minute1=14&year2=2018&month2=11&day2=12&hour2=15&'
                 'minute2=16&vars%5B%5D=tmpf&vars%5B%5D=dwpf&vars%5B%5D=sknt&'
                 'vars%5B%5D=drct&sample=1min&what=view&delim=comma&gis=yes')

    # Verify
    assert (result_url == truth_url)
Exemplo n.º 19
0
def test_plotting_meteogram_defaults():
    """
    Test default meteogram plotting
    :return fig: matplotlib.figure.Figure, matplotlib.axes._subplots.AxesSubplot,
    """
    # Setup
    url = meteogram.build_asos_request_url("AMW",
                                           start_date=datetime(2018, 3, 26),
                                           end_date=datetime(2018, 3, 27))

    df = meteogram.download_asos_data(url)  # this will hit the web server

    # Exercise
    fig, _, _, _ = meteogram.plot_meteogram(df)

    # Verify - done elsewhere

    # Cleanup - none necessary

    return fig