python - Unit test - "NameError: global name is not defined" -
this question has answer here:
i trying figure out how write unit tests functions in python - here's code written below:
def num_buses(n): import math """ (int) -> int precondition: n >= 0 return minimum number of buses required transport n people. each bus can hold 50 people. >>> num_buses(75) 2 """ bus = int() if(n>=0): bus = int(math.ceil(n/50.0)) return bus i attempting write test code results fail - here's code have started with:
import a1 import unittest class testnumbuses(unittest.testcase): """ test class function a1.num_buses. """ def test_numbuses_1(self): actual = num_buses(75) expected = 2 self.assertequal(actual, expected) # add test methods a1.num_buses here. if __name__ == '__main__': unittest.main(exit=false) when run module pressing f5 - -
e ====================================================================== error: test_numbuses_1 (__main__.testnumbuses) ---------------------------------------------------------------------- traceback (most recent call last): file "c:\1-blog-cacher\testnumbuses.py", line 8, in test_numbuses_1 actual = num_buses(75) nameerror: global name 'num_buses' not defined ---------------------------------------------------------------------- ran 1 test in 0.050s failed (errors=1) it should pass since number of passengers 75 , each bus can hold maximum of 50 people - more result in rounding of figures.
assuming code in module a1, try prefacing num_buses a1, a1.num_buses. problem unittests in different module, , num_buses function module referenced a1.num_buses in test's namespace, hence global error. therefore change test to:
class testnumbuses(unittest.testcase): """ test class function a1.num_buses. """ def test_numbuses_1(self): actual = a1.num_buses(75) expected = 2 self.assertequal(actual, expected)
Comments
Post a Comment