Python 为什么在Jupiter笔记本上执行单元测试时会出现AttributeError?
为了解决Jupiter笔记本上的一个练习,我需要对一个我称为city_function的函数执行单元测试 此函数存储在“city_functions.py”中。执行单元测试的代码存储在“test_cities2.ipynb”中。我尝试了以下代码来进行单元测试: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
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()