我有一個函式將鏈接作為輸入,然后請求值,然后將它們放入可用串列中,此函式不回傳任何內容,我該如何為它們撰寫測驗用例?例如:
list = []
def myfunc(link):
[code block]
list.append(value)
uj5u.com熱心網友回復:
我不認為它很干凈,但這會起作用:我創建了一個新檔案來將生產代碼與測驗代碼分開。我匯入了串列(在我的代碼中是 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
uj5u.com熱心網友回復:
一般來說,使用全域變數并不是很好。我建議使用類之類的東西。例如:
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。它只是有一些關于命名的東西,你可能會覺得有用
uj5u.com熱心網友回復:
匯入串列,清除它,運行函式,然后檢查它的值:
from my_module import list, myfunc
def test_myfunc():
list.clear()
myfunc()
assert list == [1, 2, 3]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/430880.html
標籤:Python python-3.x 单元测试
下一篇:lateinit屬性apiInterface尚未初始化kotlin.UninitializedPropertyAccessException:?
