7

unittest我使用 Python格式创建了一堆 Python 测试。

现在我可以运行它们了

python -m unittest discover -s TestDirectory -p '*.py' -v

我找到了它们,然后运行它们。

现在,无论我是在 Windows 上还是在 Linux 上运行测试,都存在细微的差别。实际上,在 Windows 上,测试是按字母顺序运行的,而在 Linux 上,测试是按人类特定的可发现顺序运行的,即使总是相同的。

问题是我依靠测试文件的前两个字母来排序测试的执行顺序。并不是说它们必须按特定顺序运行,而是要进行某种信息测试,在其输出中显示版本数据,以便首先出现在测试运行日志中。

我可以做些什么来在 Linux 上按字母顺序运行测试吗?

4

1 回答 1

0

我还没有尝试过,但我想您可以做的一件事是覆盖 TestSuite 类以添加排序功能。然后你可以在调用 unittest run 函数之前调用 sort 函数。因此,在“AllTests.py”脚本中,您可以添加如下内容:

class SortableSuite(unittest.TestSuite):
    def sort(self):
        self._tests.sort(cmp=lambda x,y: x._testMethodName < y._testMethodName)
    def run(self,testResult):
        #or if you don't want to run a sort() function, you can override the run
        #function to automatically sort.
        self._tests.sort(cmp=lambda x,y: x._testMethodName < y._testMethodName)
        return unittest.TestSuite.run(self,testResult)

loader = unittest.TestLoader()
loader.suiteClass = SortableSuite
suite = loader.loadTestFromTestCases(collectedTests)
suite.sort()
suite.run(defaultTestResult())
于 2013-04-15T15:53:18.893 回答