Python单元测试:使用参数的测试?

Python单元测试:使用参数的测试?,python,python-unittest,Python,Python Unittest,我第一次使用Python中的unittest包创建测试。我现在正在编写测试的项目的一部分是创建一个新的数据库文件(SQLite),并确保正确设置了各种表。我有三个表具有相同的结构,因此测试除了表名之外是相同的 因为它是如此相似,我试着用DRY方法来思考,并希望制作一个测试函数,可以在三个表中使用,其中一个参数提供我要测试的表的表名,然后只调用测试三次,每个表名一次。如下所示: def NameExists(self, table_name): self.assertEqual('Na

我第一次使用Python中的unittest包创建测试。我现在正在编写测试的项目的一部分是创建一个新的数据库文件(SQLite),并确保正确设置了各种表。我有三个表具有相同的结构,因此测试除了表名之外是相同的

因为它是如此相似,我试着用DRY方法来思考,并希望制作一个测试函数,可以在三个表中使用,其中一个参数提供我要测试的表的表名,然后只调用测试三次,每个表名一次。如下所示:

 def NameExists(self, table_name):
     self.assertEqual('Name', self.db.models[table_name].record(0).value('Field Name'))
我正在努力解决的是,unittest似乎不允许使用参数。我发现的任何东西都没有表明unittest以任何方式、形状或形式支持参数。除了复制/粘贴重复代码之外,我还试图找出是否有一种使用unittest创建可重用测试代码的方法


如有任何想法/想法,将不胜感激。提前谢谢

你可以做一个循环如果我可以发送参数,我会同意你。我一直使用def testName(self)的定义,无法添加参数,for循环是无用的。这里传入的参数是
table_name
,使用
self
作为对另一个def函数的引用,如果您得到某种位置错误或关键字参数错误…因为我们不知道您的回溯错误是什么样的。
table_name
的pass by reference就是这里使用的内容。如果您没有设置为使用
unittest
,您可以切换到
pytest
,它支持参数,并且越来越多地取代
unittest
。@FishingCode是的,在我的示例中,我确实有一个参数。这是我希望我能做的一个例子,而不是Unittest允许我做的。Unittest只允许(self),这是因为包的工作方式、您添加测试用例的方式以及它们的调用方式。添加测试用例不允许您在此时添加参数。如果它像我写一个带有附加参数的函数那样简单,我完全可以做到。你可以做一个for循环如果我可以发送参数,我会同意你的。我一直使用def testName(self)的定义,无法添加参数,for循环是无用的。这里传入的参数是
table_name
,使用
self
作为对另一个def函数的引用,如果您得到某种位置错误或关键字参数错误…因为我们不知道您的回溯错误是什么样的。
table_name
的pass by reference就是这里使用的内容。如果您没有设置为使用
unittest
,您可以切换到
pytest
,它支持参数,并且越来越多地取代
unittest
。@FishingCode是的,在我的示例中,我确实有一个参数。这是我希望我能做的一个例子,而不是Unittest允许我做的。Unittest只允许(self),这是因为包的工作方式、您添加测试用例的方式以及它们的调用方式。添加测试用例不允许您在此时添加参数。如果它像我编写一个带有附加参数的函数那样简单,我完全可以做到这一点。