繁体   English   中英

为 function 编写没有返回值的单元测试

[英]Write a Unit Test for function without return value

我有一个 function 将链接作为输入,然后请求值,然后将它们放入可用列表中,这个 function 不返回任何内容,我如何为它们编写测试用例? 例如:

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。 它只是包含一些您可能会觉得有用的关于命名的内容

导入列表,清除它,运行 function 然后检查它的值:

from my_module import list, myfunc

def test_myfunc():
  list.clear()
  myfunc()
  assert list == [1, 2, 3]

我认为它不是很干净,但这会起作用:我创建了一个新文件来将生产代码与测试代码分开。 我导入了列表(在我的代码中是 l)并对其进行了测试。 我的主.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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM