如何运行一组Python单元测试

7 浏览
0 Comments

如何运行一组Python单元测试

我正在使用一个Bash脚本运行一系列的单元测试。通常情况下,有什么更符合Python风格的方法吗?\n假设我不能改变单元测试,有什么最符合Python风格的方法吗?\n运行所有测试的Bash脚本如下:\n

#!/bin/bash
function PJTUnitTests () {
    exitCode=0
    for test in $(ls PACKAGE_DIRECTORY/test/test_transform.py PACKAGE_DIRECTORY/test/test_trf*.py); do
        name=$(basename $test)
        echo "running ${name}"
        ${test} &> ${name}.test
        if [ $? != "0" ]; then 
           echo "$(date) "${test}" failed" | tee -a test.fail
           exitCode=1
        else
        echo "$(date) ${test} ok" | tee -a test.ok
        fi
    done
    if [ $exitCode != "0" ]; then
        echo "At least one test failed -- see summary file test.fail for details."
    else
        echo "All tests passed."
    fi
}
PJTUnitTests

\n一个典型的单元测试如下:\n

import json
import subprocess
import os
import os.path
import sys
import unittest
from PACKAGE.MODULE1 import msg
class Echotest(unittest.TestCase):
    def test_runEcho(self):
        cmd = ['Echo_1.py']
        cmd.extend(['--testInt', '1234'])
        cmd.extend(['--testFloat', '-1.212'])
        cmd.extend(['--testIntList', '1,2,3,4,5,6'])
        cmd.extend(['--testSubstepList', 'all:juice', 'jane:apple', 'bob:orange', 'alice:pear'])
        cmd.extend(['--testSubstepInt', 'all:34', 'jane:1', 'bob:2', 'alice:-3'])
        cmd.extend(['--testSubstepBool', 'all:True', 'jane:false', 'bob:tRuE', 'alice:FaLse'])
        msg.info('Will run this transform: {0}'.format(cmd))
        p = subprocess.Popen(cmd, shell = False, stdout = subprocess.PIPE, stderr = subprocess.STDOUT, bufsize = 1)
        while p.poll() is None:
            line = p.stdout.readline()
            sys.stdout.write(line)
        # Hoover up remaining buffered output lines.
        for line in p.stdout:
            sys.stdout.write(line)
        self.assertEqual(p.returncode, 0)
        # Now load metadata and test a few important values.
        with open('jobReport.json') as jr:
            md = json.load(jr)
            self.assertEqual(isinstance(md, dict), True)
if __name__ == '__main__':
    unittest.main()

0
0 Comments

如何运行一组Python单元测试

Python中最符合Python风格的方法应该是使用测试框架 - nose和py.test是最流行的(我个人观点)。

因此,在您的bash脚本中将控制变量传递给所使用的测试框架,这样您将更符合Python风格,我想。

在Python中编写单元测试对于确保代码的质量和可靠性非常重要。通过编写单元测试,可以测试代码的各个部分,并验证它们是否按预期工作。

那么,如何运行一组Python单元测试呢?以下是解决方法:

1. 选择一个合适的测试框架:有许多Python测试框架可供选择,但最流行的是nose和py.test。这些框架提供了许多有用的功能和易于使用的语法,使编写和运行测试变得更加简单。

2. 安装所选的测试框架:使用pip命令(Python包管理工具)安装所选的测试框架。例如,要安装nose,可以运行以下命令:

   pip install nose
   

3. 编写测试用例:创建一个或多个用于测试代码的测试用例。测试用例应该覆盖代码的各个方面,并测试不同的输入和边界条件。每个测试用例应该是一个独立的函数,并使用特定的命名约定(例如,以"test_"开头)。

4. 运行测试:使用所选的测试框架来运行测试。在命令行中,可以使用以下命令来运行nose测试:

   nosetests
   

或者使用以下命令来运行py.test测试:

   pytest
   

运行测试时,测试框架会自动查找并运行所有符合命名约定的测试用例,并在控制台上显示测试结果。

5. 分析测试结果:测试框架会将测试结果显示在控制台上,以指示每个测试用例的通过或失败。通过分析测试结果,可以了解哪些测试通过了,哪些测试失败了,以及失败的原因。

通过按照上述步骤编写和运行Python单元测试,您可以确保代码的质量和可靠性,并及时发现和修复潜在的问题。这将有助于提高代码的可维护性和稳定性,并为未来的开发工作打下坚实的基础。

0