如何断言类型等于给定值
How to assert that a type equals a given value
我正在为一个方法编写测试,我想验证该方法 returns 是一个特定类型。但是,当我尝试这样做时,出现错误。
def search_emails(mail):
data = mail.uid('search')
raw_email = data[0][1]
return raw_email
类型(raw_email)是:<class 'bytes'>
当我运行这个测试时:
def test_search_emails_returns_bytes():
result = email_handler.search_emails(mail)
assert type(result) == "<class 'bytes'>"
我收到这个错误。我如何陈述断言才能使测试通过?或者有没有更好的方法来编写测试?
E assert <class 'bytes'> == "<class 'bytes'>"
你需要使用 isinstance,它是一个用于类型检查的内置函数
def test_search_emails_returns_bytes():
result = email_handler.search_emails(mail)
assert isinstance(result, bytes)
如果你想检查某些东西是否特定于 class,isinstance 不会做,因为即使它是派生的 class,它也会 return 为真,而不是正是您要检查的 class。您可以像这样将类型作为字符串获取:
def decide_type(raw_prop):
"""Returns the name of a type of an object.
Keep in mind, type(type("a")) is Type,
type(type("a").__name__) is Str
"""
type_as_string = type(first_raw_prop).__name__
return type_as_string
实际上会 return 'lst'、'int' 等。
在您的代码中,这将转换为如下内容:
assert type(result).__name__ == "bytes"
您可以使用 is
运算符来检查变量是否属于特定类型
my_var = 'hello world'
assert type(my_var) is str
既然你提到你正在使用方法,那么,assertIsInstance
可能会派上用场:
import unittest
def myfunc(name):
return type(name)
class TestSum(unittest.TestCase):
def test_type(self):
result = myfunc('Micheal')
self.assertIsInstance(result, str)
unittest.main()
要查看断言方法列表,请向下滚动 here:
尽管有异议,但此版本消除了变量计算类型的任何歧义:
result = "text"
self.assertEqual(type(result),type("text"))
我正在为一个方法编写测试,我想验证该方法 returns 是一个特定类型。但是,当我尝试这样做时,出现错误。
def search_emails(mail):
data = mail.uid('search')
raw_email = data[0][1]
return raw_email
类型(raw_email)是:<class 'bytes'>
当我运行这个测试时:
def test_search_emails_returns_bytes():
result = email_handler.search_emails(mail)
assert type(result) == "<class 'bytes'>"
我收到这个错误。我如何陈述断言才能使测试通过?或者有没有更好的方法来编写测试?
E assert <class 'bytes'> == "<class 'bytes'>"
你需要使用 isinstance,它是一个用于类型检查的内置函数
def test_search_emails_returns_bytes():
result = email_handler.search_emails(mail)
assert isinstance(result, bytes)
如果你想检查某些东西是否特定于 class,isinstance 不会做,因为即使它是派生的 class,它也会 return 为真,而不是正是您要检查的 class。您可以像这样将类型作为字符串获取:
def decide_type(raw_prop):
"""Returns the name of a type of an object.
Keep in mind, type(type("a")) is Type,
type(type("a").__name__) is Str
"""
type_as_string = type(first_raw_prop).__name__
return type_as_string
实际上会 return 'lst'、'int' 等。
在您的代码中,这将转换为如下内容:
assert type(result).__name__ == "bytes"
您可以使用 is
运算符来检查变量是否属于特定类型
my_var = 'hello world'
assert type(my_var) is str
既然你提到你正在使用方法,那么,assertIsInstance
可能会派上用场:
import unittest
def myfunc(name):
return type(name)
class TestSum(unittest.TestCase):
def test_type(self):
result = myfunc('Micheal')
self.assertIsInstance(result, str)
unittest.main()
要查看断言方法列表,请向下滚动 here:
尽管有异议,但此版本消除了变量计算类型的任何歧义:
result = "text"
self.assertEqual(type(result),type("text"))