为没有 return 值的函数编写单元测试
Write a Unit Test for function without return value
我有一个函数将 link 作为输入,然后请求值,然后将它们放入可用列表中,这个函数没有 return 任何东西,我该如何编写测试用例为他们?
例如:
list = []
def myfunc(link):
[code block]
list.append(value)
一般使用全局变量不太好。我建议使用 class 之类的东西。例如:
class Whatevs:
def __init__(self):
self.list = []
def my_func(self,link):
[code block]
self.list.append(value)
然后在你的测试中你可以这样做:
instance = Whatevs()
instance.my_func()
assert instance.list == [whatever it should be]
此外,我建议您阅读 PEP8。它只是包含一些您可能会觉得有用的命名内容
导入列表,清除它,运行函数然后检查它的值:
from my_module import list, myfunc
def test_myfunc():
list.clear()
myfunc()
assert list == [1, 2, 3]
我认为它不是很干净,但这会起作用:
我创建了一个新文件来将生产代码与测试代码分开。
我导入了列表(在我的代码中是 l)并对其进行了测试。
我的 main.py:
from typing import Any
l = []
def myfunc(link: Any) -> None:
my_actual_value = "my_expected_value"
l.append(my_actual_value)
我的main_test.py:
import unittest
import main
from main import myfunc
class TestMyFunc(unittest.TestCase):
def setUp(self) -> None:
main.l = []
def test_my_func(self) -> None:
# Given
some_link = "some_link"
my_expected_value = ["my_expected_value"]
# When
myfunc(some_link)
# Then
assert my_expected_value == main.l
def test_my_func2(self) -> None:
# Given
some_link = "some_link2"
my_expected_value = ["my_expected_value"]
# When
myfunc(some_link2)
# Then
assert my_expected_value == main.l
我有一个函数将 link 作为输入,然后请求值,然后将它们放入可用列表中,这个函数没有 return 任何东西,我该如何编写测试用例为他们? 例如:
list = []
def myfunc(link):
[code block]
list.append(value)
一般使用全局变量不太好。我建议使用 class 之类的东西。例如:
class Whatevs:
def __init__(self):
self.list = []
def my_func(self,link):
[code block]
self.list.append(value)
然后在你的测试中你可以这样做:
instance = Whatevs()
instance.my_func()
assert instance.list == [whatever it should be]
此外,我建议您阅读 PEP8。它只是包含一些您可能会觉得有用的命名内容
导入列表,清除它,运行函数然后检查它的值:
from my_module import list, myfunc
def test_myfunc():
list.clear()
myfunc()
assert list == [1, 2, 3]
我认为它不是很干净,但这会起作用: 我创建了一个新文件来将生产代码与测试代码分开。 我导入了列表(在我的代码中是 l)并对其进行了测试。 我的 main.py:
from typing import Any
l = []
def myfunc(link: Any) -> None:
my_actual_value = "my_expected_value"
l.append(my_actual_value)
我的main_test.py:
import unittest
import main
from main import myfunc
class TestMyFunc(unittest.TestCase):
def setUp(self) -> None:
main.l = []
def test_my_func(self) -> None:
# Given
some_link = "some_link"
my_expected_value = ["my_expected_value"]
# When
myfunc(some_link)
# Then
assert my_expected_value == main.l
def test_my_func2(self) -> None:
# Given
some_link = "some_link2"
my_expected_value = ["my_expected_value"]
# When
myfunc(some_link2)
# Then
assert my_expected_value == main.l