Beispiel #1
0
def test_args_kwargs_check_function_passing(argspec):
    code = 'my_fun(1, 2, 3, 4, c = 5)'
    s = setup_state(pec='def my_fun(a, b, *args, **kwargs): pass',
                    stu_code=code,
                    sol_code=code)
    x = s.check_function('my_fun')
    helper.passes(x.check_args(argspec).has_equal_value())
Beispiel #2
0
def test_same_as(stu, same_as, correct):
    s = setup_state(stu_code=stu, sol_code='import pandas as pd')
    if correct:
        helper.passes(s.has_import('pandas', same_as=same_as))
    else:
        with pytest.raises(TF):
            s.has_import('pandas', same_as=same_as)
Beispiel #3
0
def test_chaining(stu, correct):
    s = setup_state(stu_code=stu, sol_code='import numpy.random as rand')
    if correct:
        helper.passes(s.has_import('numpy.random'))
    else:
        with pytest.raises(TF):
            s.has_import('numpy.random')
Beispiel #4
0
def check_function_sig_false():
    code = "f(color = 'blue')"
    s = setup_state(pec="def f(*args, **kwargs): pass",
                    sol_code=code,
                    stu_code=code)
    helper.passes(
        s.check_function('f', 0,
                         signature=False).check_args('color').has_equal_ast())
Beispiel #5
0
def test_method_2():
    code = "df[df.b == 'x'].a.sum()"
    s = setup_state(sol_code = code,
                    stu_code = code,
                    pec = "import pandas as pd; df = pd.DataFrame({'a': [1, 2, 3], 'b': ['x', 'x', 'y']})")
    helper.passes(s.check_function('df.a.sum', signature = False))
    from pythonwhat.signatures import sig_from_obj
    import pandas as pd
    helper.passes(s.check_function('df.a.sum', signature = sig_from_obj(pd.Series.sum)))
Beispiel #6
0
def test_named_vs_positional(stu):
    s = setup_state(sol_code='round(1.23, 2)', stu_code=stu)
    helper.passes(s.check_function('round').check_args(0).has_equal_value())
    helper.passes(
        s.check_function('round').check_args("number").has_equal_value())
    helper.passes(s.check_function('round').check_args(1).has_equal_value())
    helper.passes(
        s.check_function('round').check_args("ndigits").has_equal_value())
Beispiel #7
0
def check_function_multiple_times():
    from pythonwhat.local import setup_state
    s = setup_state(sol_code = "print('test')",
                    stu_code = "print('test')")
    helper.passes(s.check_function('print'))
    helper.passes(s.check_function('print').check_args(0))
    helper.passes(s.check_function('print').check_args('value'))
Beispiel #8
0
def test_basic_check_function_passing(arg, stu):
    pec = 'def my_fun(a, b): pass'
    sol = 'my_fun(1, 2)'
    s = setup_state(stu_code=stu, sol_code=sol, pec=pec)
    helper.passes(s.check_function('my_fun'))

    helper.passes(s.check_function('my_fun').check_args(arg))
    helper.passes(s.check_function('my_fun').check_args(arg).has_equal_value())
Beispiel #9
0
def test_method_1():
    code = "df.groupby('b').sum()"
    s = setup_state(sol_code = code,
                    stu_code = code,
                    pec = "import pandas as pd; df = pd.DataFrame({'a': [1, 2, 3], 'b': ['x', 'x', 'y']})")
    helper.passes(s.check_function('df.groupby').check_args(0).has_equal_value())
    helper.passes(s.check_function('df.groupby.sum', signature = False))
    from pythonwhat.signatures import sig_from_obj
    import pandas as pd
    helper.passes(s.check_function('df.groupby.sum', signature = sig_from_obj(pd.Series.sum)))
Beispiel #10
0
def test_basic_check_function_failing():
    pec = 'def my_fun(a=1): pass'
    sol = 'my_fun(1)'
    s = setup_state(stu_code='', sol_code=sol, pec=pec)
    with pytest.raises(TF):
        s.check_function('my_fun')

    s = setup_state(stu_code='my_fun()', sol_code=sol, pec=pec)
    helper.passes(s.check_function('my_fun'))
    with pytest.raises(TF):
        s.check_function('my_fun').check_args('a')

    s = setup_state(stu_code='my_fun(a = 10)', sol_code=sol, pec=pec)
    helper.passes(s.check_function('my_fun'))
    helper.passes(s.check_function('my_fun').check_args('a'))
    with pytest.raises(TF):
        s.check_function('my_fun').check_args('a').has_equal_value()
def test_has_printout_multiple(stu):
    sol = 'print("randomness")\nprint(1, 2, 3)'
    s = setup_state(stu_code=stu, sol_code=sol)
    helper.passes(s.has_printout(1))
Beispiel #12
0
def test_has_expr_override_pass():
    stu = 'x = [1, 2, 3]'
    sol = 'x = [1, 2, 5]'
    s = setup_state(stu_code=stu, sol_code=sol)
    helper.passes(s.check_object('x').has_equal_value(expr_code = 'x[2]', override=3))
Beispiel #13
0
def check_function_sig_false_override():
    s = setup_state(pec="def f(*args, **kwargs): pass",
                    sol_code="f(color = 'blue')",
                    stu_code="f(c = 'blue')")
    helper.passes(s.override("f(c = 'blue')").check_function('f', 0, signature=False)\
                .check_args('c').has_equal_ast())
Beispiel #14
0
def test_check_function_with_has_equal_value():
    code = 'import numpy as np\narr = np.array([1, 2, 3, 4, 5])\nnp.mean(arr)'
    s = setup_state(stu_code=code, sol_code=code)
    helper.passes(s.check_function('numpy.mean').has_equal_value())
def test_check_object_single_process():
    state1pid = setup_state('x = 3', '', pid=1)
    helper.passes(state1pid.check_object('x'))
Beispiel #16
0
def test_basic_has_printout_passing(stu):
    sol = 'print(1, 2, 3)'
    s = setup_state(stu_code=stu, sol_code=sol)
    helper.passes(s.has_printout(0))