如何运行一组Python单元测试
如何运行一组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()
如何运行一组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单元测试,您可以确保代码的质量和可靠性,并及时发现和修复潜在的问题。这将有助于提高代码的可维护性和稳定性,并为未来的开发工作打下坚实的基础。