【发布时间】:2017-01-26 08:30:25
【问题描述】:
我有这门课:
接受.py
class AcceptC(object):
def __init__(self):
self.minimum = 30
self.maximum = 40
和单元测试:
accept_test.py
import unittest
import pytest
from app.accept import AcceptC
class TestAcceptC(unittest.TestCase):
def setUp(self):
self.accept = AcceptC()
@pytest.mark.parametrize(
"minimum, maximum, expected_min, expected_max", [
("13", "5", 30, 40),
("30", "40", 30, 40),
])
def test_init_returns_correct_results(minimum, maximum, expected_min, expected_max):
expected_min = self.accept.minimum
expected_max = self.accept.maximum
self.assertEqual(minimum, expected_min)
self.assertEqual(maximum, expected_max)
if __name__ == "__main__":
unittest.main()
使用 pytest 运行时出现错误:
NameError: name 'self' 未定义
我还看到我不能在测试函数中使用self 作为参数。
最后,有没有办法避免使用:
expected_min = self.accept.minimum
expected_max = self.accept.maximum
并立即使用self.accept.minimum?
如果我使用self 作为测试函数的参数,它会返回:
找不到夹具'self'
【问题讨论】:
-
def test_init_returns_correct_results不在任何类中,因此未定义“self” -
这是因为 self 如果没有定义你在哪里使用它。这就是全部答案。仅使用已定义的名称。
-
@ZiTAL:你是对的。我错过了缩进。但我仍然有错误消息..