我正在尝试从配置文件中加载基于应用程序名称的测试数据。 我正在使用ConfigParser,这是一个鼻子插件。 这是我的代码。我只是不知道如何在动态加载测试时传递应用程序名称。我尝试了构造函数,但无法找到将参数传递给loadTestsFromTestCase方法的方法。 有什么想法吗?
import unittest
class TestMyApp(unittest.TestCase):
def test1(self):
print "test1: %s" % self.app
def test2(self):
print "test2: %s" % self.app
if __name__ == '__main__':
# here specify the app name
suite = unittest.TestLoader().loadTestsFromTestCase(TestMyApp)
# here specify the other app name
suite.addTests(unittest.TestLoader().loadTestsFromTestCase(TestMyApp))
unittest.TextTestRunner(verbosity=2).run(suite)
答案 0 :(得分:1)
您需要进行测试参数化!使用pytest很容易。看看这个代码示例:
import pytest
class AppImpl:
def __init__(self, app_name):
self.name = app_name
def get_name(self):
return self.name
@pytest.fixture(params=['App1', 'App2'])
def app(request):
return AppImpl(request.param)
def test_1(app):
assert app.get_name()
def test_2(app):
assert 'App' in app.get_name()
if __name__ == '__main__':
pytest.main(args=[__file__, '-v'])
通过使用逻辑AppImpl
的类实现,您可以创建一个fixture app
,可以通过特定的arg params=['App1', 'App2']
进行参数化。然后在测试test_1
和test_2
中,在funcargs中使用fixture名称app
。这种可能性提供了更多的模块化和可读性测试。