Python中的单元测试——单元测试

什么是单元测试? 单元测试是软件测试的第一级,测试软件中最小的可测试部分。这用于验证软件的每个单元是否按设计执行。 unittest测试框架是python的 单元测试 风格框架。

null

方法: 单元测试采用白盒测试法。

unittest框架支持的OOP概念:

  • 测试夹具: 测试夹具用作运行测试的基线,以确保有一个固定的环境来运行测试,从而使结果可重复。 例如:
    • 创建临时数据库。
    • 启动服务器进程。
  • 测试用例: 测试用例是一组用于确定被测试系统是否正常工作的条件。
  • 测试套件: 测试套件是一组测试用例,用于测试软件程序,通过一起执行聚合测试来显示它具有一组特定的行为。
  • 测试跑步者: 测试运行程序是设置测试执行并向用户提供结果的组件。

基本测试结构: unittest通过以下两种方式定义测试:

  • 使用代码管理测试“夹具”。
  • 自我测试。

import unittest
class SimpleTest(unittest.TestCase):
# Returns True or False.
def test( self ):
self .assertTrue( True )
if __name__ = = '__main__' :
unittest.main()


这是使用unittest框架的基本测试代码,它有一个单独的测试。如果TRUE为FALSE,则此test()方法将失败。

运行测试

if __name__ == '__main__':
    unittest.main()

最后一个块通过命令行运行文件来帮助运行测试。

.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

这里,在输出中的“.”在输出的第一行上,表示测试通过。 在运行测试时,命令行中添加了“-v”选项,以获得更详细的测试结果。

test (__main__.SimpleTest) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

可能的结果: 有三种可能的测试结果:

  • 好——这意味着所有测试都通过了。
  • 失败–这意味着测试没有通过,并引发了AssertionError异常。
  • 错误–这意味着测试引发的异常不是AssertionError。

让我们通过一个示例来了解unittest框架的实现。

实施:

# Python code to demonstrate working of unittest
import unittest
class TestStringMethods(unittest.TestCase):
def setUp( self ):
pass
# Returns True if the string contains 4 a.
def test_strings_a( self ):
self .assertEqual( 'a' * 4 , 'aaaa' )
# Returns True if the string is in upper case.
def test_upper( self ):
self .assertEqual( 'foo' .upper(), 'FOO' )
# Returns TRUE if the string is in uppercase
# else returns False.
def test_isupper( self ):
self .assertTrue( 'FOO' .isupper())
self .assertFalse( 'Foo' .isupper())
# Returns true if the string is stripped and
# matches the given output.
def test_strip( self ):
s = 'geeksforgeeks'
self .assertEqual(s.strip( 'geek' ), 'sforgeeks' )
# Returns true if the string splits and matches
# the given output.
def test_split( self ):
s = 'hello world'
self .assertEqual(s.split(), [ 'hello' , 'world' ])
with self .assertRaises(TypeError):
s.split( 2 )
if __name__ = = '__main__' :
unittest.main()


上面的代码是测试5个字符串方法的简短脚本。 单元测试。测试用例 用于通过子类化创建测试用例。底部的最后一段代码允许我们通过运行文件来运行所有测试。

准则中使用的基本术语:

  • assertEqual() 此语句用于检查获得的结果是否等于预期结果。
  • assertTrue()/assertFalse() 此语句用于验证给定语句是否正确。
  • assertRaises() 此语句用于引发特定的异常。

测试说明:

  • 测试字符串 此测试用于测试字符串的属性,其中一个字符(如“a”)乘以一个数字(如“x”),输出为x乘以“a”。在这种情况下,如果结果与给定的输出匹配,assertEqual()语句将返回true。
  • 测试 此测试用于检查给定字符串是否转换为大写。如果返回的字符串为大写,则assertEqual()语句将返回true。
  • 测试 此测试用于测试字符串的属性,如果字符串为大写,则返回TRUE,否则返回False。assertTrue()/assertFalse()语句用于此验证。
  • 测试条 此测试用于检查函数中传递的所有字符是否已从字符串中剥离。如果字符串被剥离并与给定的输出匹配,则assertEqual()语句返回true。
  • 测试_分割 此测试用于检查字符串的split函数,该函数通过函数中传递的参数拆分字符串,并将结果作为列表返回。在这种情况下,如果结果与给定的输出匹配,assertEqual()语句将返回true。

单元测试。main() 为测试脚本提供命令行界面。从命令行运行上述脚本时,将生成以下输出:

.....
----------------------------------------------------------------------
Ran 5 tests in 0.000s

OK

本文由 阿迪蒂·古普塔 .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享