我有一个名为Helper
的类,其中包含一个名为create_list
的方法。我为create_list
方法编写的测试包括以下情况:如果任何值与预期的类型都不匹配,则应该引发TypeError
。
该课程如下:
class Helper(object):
def create_list(self, hel_id, hel_name, hel_type, hel_desc):
if not isinstance(hel_id, int):
raise TypeError
elif not isinstance(hel_name, str):
raise TypeError
elif not isinstance(hel_type, str):
raise TypeError
elif not isinstance(hel_desc, str):
raise TypeError
我写的测试如下:
import unittest
import Helper
class TestHelp(unittest.TestCase):
"""Unit Tests for the Helper class"""
def setUp(self):
self.helper = Helper()
def test_create_list_raise_type_error(self):
with self.assertRaises(TypeError):
self.helper.create_list('', 'somename', 'sometype', 'somedescription')
self.helper.create_list(1, 1, 'sometype', 'somedescription')
self.helper.create_list(1, 'somename', 1, 'somedescription')
self.helper.create_list(1, 'somename', 'sometype', 1)
问题是,当第一个if isinstance
检查添加到Helper
类时,测试通过了。注释掉其他检查不会使测试失败。如何编写测试(或代码,如果那是问题的话),以便仅在满足所有条件时才通过测试,即为每个无效输入引发TypeError
。
答案 0 :(得分:2)
您的示例通过了,因为一个实例化引发了一个异常。声明所有这样的实例:
pa_data <- data_frame(
GEOID = pa_counties_sf$GEOID
) %>%
mutate(type = sample(c("A", "B"), size = nrow(.), replace = T))
pa_counties_sf %>%
left_join(pa_data, by = "GEOID") %>%
ggplot() +
geom_sf(aes(fill = type), color = "blue")