Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么在Jupiter笔记本上执行单元测试时会出现AttributeError?_Python_Unit Testing_Jupyter Notebook - Fatal编程技术网

Python 为什么在Jupiter笔记本上执行单元测试时会出现AttributeError?

Python 为什么在Jupiter笔记本上执行单元测试时会出现AttributeError?,python,unit-testing,jupyter-notebook,Python,Unit Testing,Jupyter Notebook,为了解决Jupiter笔记本上的一个练习,我需要对一个我称为city_function的函数执行单元测试 此函数存储在“city_functions.py”中。执行单元测试的代码存储在“test_cities2.ipynb”中。我尝试了以下代码来进行单元测试: import unittest from city_functions import city_function class CityCountryTestCase(unittest.TestCase): # Ver

为了解决Jupiter笔记本上的一个练习,我需要对一个我称为city_function的函数执行单元测试

此函数存储在“city_functions.py”中。执行单元测试的代码存储在“test_cities2.ipynb”中。我尝试了以下代码来进行单元测试:

import unittest 



from city_functions import city_function


class CityCountryTestCase(unittest.TestCase):

    # Verify if city_function works



    def test_city_country_function(self):

        output = city_function('lisbon', 'portugal')

        self.assertEqual(output, 'Lisbon, Portugal')



unittest.main() 
我得到了一个AttributeError类型:AttributeError:module“main”没有属性。 我能做些什么来解决这个问题?

有一个很好的例子,描述了您的问题:

原因是unittest.main查看的是
sys.argv
,第一个参数是启动IPython或Jupyter的参数,因此内核连接文件不是有效属性的错误。将显式列表传递给
unittest.main
将阻止IPython和Jupyter查看
sys.argv
。传递
exit=False
将阻止
unittest.main
关闭内核进程

最后一行应该是这样的:

unittest.main(argv=['first-arg-is-ignored',exit=False)

import unittest 



from city_functions import city_function


class CityCountryTestCase(unittest.TestCase):

    # Verify if city_function works



    def test_city_country_function(self):

        output = city_function('lisbon', 'portugal')

        self.assertEqual(output, 'Lisbon, Portugal')



unittest.main()