python 测试用例的无输入_如何为无参数方法自动生成测试用例?
為了減少boiler-plate代碼,我想出了在類測試儀中為所有無參數方法生成測試用例的想法。在
跑步時py.測試,它只識別靜態編寫的測試用例(測試a、測試b),而不識別使用setattr(Tester,'test_' + name, member)動態創建的測試用例
也許吧py.測試在調用setUpClass之前,是否已經用“test”檢查了類測試程序中的方法?有什么提示嗎?在import inspect
import unittest
class Testee:
def a(self):
print('a')
def b(self):
print('b')
#...
#...
def z(self):
print('z')
class Tester(unittest.TestCase):
@classmethod
def setUpClass(cls):
testee = Testee()
for name, member in inspect.getmembers(object=testee, predicate=inspect.ismethod or inspect.iscoroutine):
if len(inspect.signature(member).parameters):
print(str(inspect.signature(member).parameters))
setattr(Tester,'test_' + name, member)
if inspect.isfunction(member) or inspect.ismethod(member):
setattr(Tester,'test_' + name, member)
elif inspect.iscoroutinefunction(member):
setattr(Tester,'test_' + name, functools.partialmethod(TestInstrument.run_coro, member))
else:
print(member)
return super().setUpClass()
def test_a(self):
Tester.testee.a()
def test_b(self):
Tester.testee.b()============================= test session starts ============================= platform win32 -- Python 3.5.1, pytest-2.9.2, py-1.4.31, pluggy-0.3.1 -- c:\program
files\python35\python.exe cachedir: .cache rootdir: C:\tests, inifile:
collected 2 items
sandbox.py::Tester::test_a PASSED sandbox.py::Tester::test_b PASSED
========================== 2 passed in 0.03 seconds ===========================
編輯:如果我將setupClass中的代碼移動到全局范圍(類之外),則py.測試檢測并運行自動生成的測試用例。在
總結
以上是生活随笔為你收集整理的python 测试用例的无输入_如何为无参数方法自动生成测试用例?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 盘点海口最好吃的西餐厅top10
- 下一篇: java白盒测试工具有哪些